'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