なぜレール3.1は私のparamsハッシュの一部をラップするのですが、すべてではありませんか?

私はレールとGoogleマップで簡単なものを試しています。私は緯度、経度、およびアイコンのいくつかの属性を持つマーカーモデルを持っています。私のアプリは標準的なRESTマーカーコントローラーにjsonをポストしています。私のブラウザから見ると、jsonは次のようになります。

{"latitude":40.666700768608465,"longitude":-99.722078125,"icon":"http://localhost:3000/assets/4.png","id":"C4150EEB-D861-4B36-B69B-154C567F51CB"}

(そのIDは、フロントエンドのjavascript MVCによって生成されます)

ログには次のように表示されます。

Started POST "/markers" for 127.0.0.1 at 2011-11-12 23:41:25 -0700 
Processing by MarkersController#create as JSON
Parameters: {"latitude"=>40.666700768608465, "longitude"=>-99.722078125, "icon"=>"http://localhost:3000/assets/4.png", "id"=>"C4150EEB-D861-4B36-B69B-154C567F51CB", "marker"=>{"id"=>"C4150EEB-D861-4B36-B69B-154C567F51CB", "icon"=>"http://localhost:3000/assets/4.png"}}

私のコントローラでは、 params [:marker]
にアイコンとID(作成/更新時に無視される)がありますが、経度と緯度は無視されます。なぜそれはいくつかの属性を入れ、他の属性を残してしまうのでしょうか?私はそれらすべてに
attr_accessible を持っています。

ベストアンサー

あなたのフォームやJavaScriptが間違っています。座標は params [:marker]
ではなく params [:latitude]params
[:longitude]
にあります。また、 params [:icon]
params [:id]params [:marker] [:icon]
および params [:marker] [:id]
のように表示されるので、クライアント側のコードはむしろ混乱しているようです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です