0

'Group'という名前のエンティティと、いくつかの基本的なCRUDアクションのコントローラーがあります。私が直面している問題は、このエンティティを更新(編集)しようとすると、更新されないことです。私はこれにupdate_attributesを使用しています:

def update
  group = Group.find(params[:id])
  group.update_attributes! params[:group]
  render :json => group.to_json()
end

そして、これがWEBrickコンソールで得られるものです:

Started PUT "/groups/264.json?$$hashKey=00J&_method=PUT&group_id=null&item_sufix=null&key=null&name=ddddddddd&subgroups=" for 127.0.0.1 at 2013-02-25 00:32:03 +0200
Processing by GroupsController#update as JSON
  Parameters: {"$$hashKey"=>"00J", "group_id"=>"null", "item_sufix"=>"null", "key"=>"null", "name"=>"ddddddddd", "subgroups"=>"", "id"=>"264", "group"=>{}}

問題は、params [:group]が空になる理由のいくつかだと思います。しかし、必要なすべてのフィールド(この場合は:name)にリクエストが付属していることがわかるので、なぜこれが発生するのでしょうか。グループモデルでは私は持っていますattr_accessible :name

ルートに関しては(実際に問題に関連しているかどうかはわかりません)、config/routes.rbにこのエンティティの1行があります。

resources :groups

'Group'エンティティのルートの概要は次のとおりです。

          groups GET    /groups(.:format)                 groups#index
                 POST   /groups(.:format)                 groups#create
       new_group GET    /groups/new(.:format)             groups#new
      edit_group GET    /groups/:id/edit(.:format)        groups#edit
           group GET    /groups/:id(.:format)             groups#show
                 PUT    /groups/:id(.:format)             groups#update
                 DELETE /groups/:id(.:format)             groups#destroy

Railsバージョン:Rails 3.2.11

4

3 に答える 3

1

あなたの「グループ」=>{}は名前のようなあなたの他の乳母車を包んでいるはずです

"group" => {"name" => "ddddddddd"、 "subgroups" => ""、 "id" => "264"}

それはあなたがあなたの議論を間違って提出したことを私に教えてくれます。

group [name]=dddddddddやgroup[id]=264のように乳母車を渡してみてください

于 2013-02-24T23:23:24.930 に答える
0

Group は ActiveRecord グループと競合するため、モデル名として使用できません。グループを XGroup に変更して、再試行してください。

于 2013-02-24T22:47:55.600 に答える
-1

解決策が見つかりました。コンソールでの出力:

Parameters: {"$$hashKey"=>"00J", "group_id"=>"null", "item_sufix"=>"null", "key"=>"null", "name"=>"ddddddddd", "subgroups"=>"", "id"=>"264", "group"=>{}}

パラメータが送信されたと言うが、それらがどのように送信されたかについては何も言っていない. これが私をノックアップしたものです。レールがこのパラメーターを適切な方法で送信したよりも見ることができればと思いました。私がチェックしたとき-このパラメーターは通常のPOSTパラメーターでした(そして、リクエストURLを配置した元の投稿から見ることができます)が、レールではこのパラメーターがリクエストボディ(ペイロード)にある必要があります。これが、内部groupが空のままである理由です。

于 2013-02-25T02:17:14.963 に答える