我有一些名为'Group'的实体和一些basick 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]变空了。但是为什么会发生这种情况,因为我们可以看到所有需要的字段(在这种情况下是名称)都带有请求?在群组模型中,我确实有attr_accessible :name
至于路线(实际上并不知道它们是否与我的问题有关)我在config / routes.rb中有这个实体的单行:
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
答案 0 :(得分:1)
你的"群组" => {}应该包装你的其他婴儿车如名称
" group" => {" name" =>" ddddddddd"," subgroups" =>" "," id" =>" 264"}
告诉我你提交错误的论据。
尝试传递你的婴儿车,如组[name] = ddddddddd和group [id] = 264
答案 1 :(得分:0)
您不能将Group用作模型名称,因为它与ActiveRecord组冲突。将组更改为XGroup,然后重试。
答案 2 :(得分:-1)
找到解决方案。 控制台输出:
Parameters: {"$$hashKey"=>"00J", "group_id"=>"null", "item_sufix"=>"null", "key"=>"null", "name"=>"ddddddddd", "subgroups"=>"", "id"=>"264", "group"=>{}}
说参数已发送,但它没有说明他们的发送方式。这就是让我失望的原因。我认为如果rails可以看到这些参数而不是它们以正确的方式发送。当我检查 - 这个参数是常规的POST参数(从我的原始帖子可以看到我放置请求URL),而rails需要这个参数在请求体(有效负载)。这就是内部group
仍为空的原因。