2

私が見ている行動が本当に私が思っているものであるかどうかを確認したかったのです。

答えをグーグルで検索しましたが、これが予想される動作であることを確認するドキュメントが見つかりません。

Backbone0.9.2.1とRails3.2.3を使用しています

モデルをバックボーンに保存すると、HTTPヘッダーが表示され、JSON表現が送信されることがわかります。

{"title":"I think...","id":2,...}

コントローラーの内部では、奇妙なことに正常に機能していたparams [:opinion]を気にせず使用していましたが、問題が発生し、paramsハッシュが実際に使用されていることに気付きました。

{"title" => "I think...",
"id" => 2
"opinion" => {"title" => "I think ..."},
...

(私が問題にぶつかった理由は、idがparams [:id]に存在するが、params [:opinion] [:id]には存在しないためです。

コントローラーメソッドが呼び出される前に、attr_accessibleの名前に一致するすべてのパラメーターがこのparams [:opinion]ハッシュにマップされているように見えます。

もちろん、モデルは意見です。コントローラはopinion_controllerと呼ばれ、次のルートで到達しています。

  resources :stories, :controller => 'opinions'

(いくつかの名前を変更する過程で)

これは予想される動作ですか?誰かが私にこれについて読むことができるドキュメントを教えてもらえますか?

4

1 に答える 1

2

うん、私はこれと同じことに遭遇し、wtfを疑問に思っていました。あなたが見たように、Railsはそれを自動ラップします。変更: https ://github.com/rails/rails/pull/359

編集: APIドキュメントから:http: //api.rubyonrails.org/classes/ActionController/ParamsWrapper.html

By default, if you don’t specify the key in which the parameters would be wrapped to, ParamsWrapper will actually try to determine if there’s a model related to it or not.

この回答もそれをよく説明しています: https ://stackoverflow.com/a/9134057/341692

于 2012-12-13T08:13:43.857 に答える