SystemStackError - Уровень стека слишком глубокий

Я знаю, что здесь много вопросов об ошибках системного стека... но все вопросы и ответы уникальны. и не нашел того, что близко к моему.

Я действительно не понимаю, почему я получаю эту ошибку...

Мне не нужно представление, потому что форма отправляется через AJAX. Я проверил, работает ли мой код для вставки новой записи с консоли rails.

я проверил маршрут:

request_user POST  /users/:id/request(.:format)   users#request

я получаю системную ошибку стека при отправке этой формы:

SystemStackError at /users/11940/request
========================================

> stack level too deep

actionpack (3.2.3) lib/action_dispatch/middleware/reloader.rb, line 70
----------------------------------------------------------------------

``` ruby
   65         response = @app.call(env)
   66         response[2] = ActionDispatch::BodyProxy.new(response[2]) { cleanup! }
   67         response
   68       rescue Exception
   69         cleanup!
>  70         raise
   71       end
   72   
   73       def prepare! #:nodoc:
   74         run_callbacks :prepare if validated?
   75       end
```

App backtrace
-------------



Full backtrace
--------------

 - actionpack (3.2.3) lib/action_dispatch/middleware/reloader.rb:70:in `'

JavaScript для отправки через AJAX

     $("#user_feature_request").dialog({
        autoOpen: false,
        width: 500,
        buttons: {
            "Submit": function() {
                var id = $("#request").val();
                $.ajax({
                    url: "/users/" + id + "/request",
                    data: $("#request_form").serialize(),
                    type: "POST",
                    success: function (data) {
                        alert(data);
                        $("#user_feature_request").dialog("close");
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        alert('error: ' + textStatus + ': ' + errorThrown);
                    }
                });
                return false;
            },
            "Cancel": function() {
                $(this).dialog("close");
            }
        }
    });
    $("#request").on("click", function() {
        $("#user_feature_request").dialog("open");
    });

контроллер

  def request
    user = params[:user]
    r = Request.new
    r.user_id = params[:id]
    r.feature = user[:request]
    r.comment = user[:comment]
    r.repair = user[:issue]
    r.save
  end

Форма:

<div class="main">
  <div id="user_feature_request" title="Comment / Requested Features">
    <form id="request_form">
      <input id="user_id" name="user[id]" type="hidden" value="<%= current_user.id %>"></input>
      Requested Feature:
      <textarea cols="450" id="user_request" name="user[request]" rows="5"></textarea>
      <br/>
      Technical Issue:
      <textarea cols="450" id="user_issue" name="user[issue]" rows="5"></textarea>
      <br/>
      Comments:
      <textarea cols="450" id="user_comment" name="user[comment]" rows="5"></textarea>
    </form>
  </div>
</div>

1 ответ

Решение

Это связано с названием вашей модели и / или названием действия контроллера (Request а также request). Это своего рода зарезервированные слова в Rails.

Другие вопросы по тегам