1

ここにはシステム スタック エラーに関する質問がたくさんあることは知っていますが、質問と回答のすべてがユニークです。私に近いものは見つかりませんでした。

このエラーが発生する理由が本当にわかりません...

フォームは 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 `'

AJAX 経由で送信する JavaScript

     $("#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>
4

1 に答える 1

2

これは、モデル名および/またはコントローラー アクション名 (Requestおよびrequest) が原因です。これらはRailsの予約語のようなものです。

于 2014-12-02T17:21:28.783 に答える