我有一个将数据发送到我的控制器的ajax请求,但我想在将其保存到数据库之前向哈希添加元素。
我现有的哈希看起来像这样:
{"application_field_attributes"=>{"0"=>{"id"=>"10"}}}
我还要将元素params[:xposition]
和params[:yposition]
添加到上面的哈希中,以便它看起来像这样:
{"application_field_attributes"=>{"0"=>{"id"=>"10", "xposition"=>"1", "yposition"=>"0"}}}
我该怎么做?
修改
我这样做的原因是因为我试图跟踪网格上可拖动元素的丢失位置。
在我的ajax调用中,我传递了x和y位置,这是我从网格上放置的一些“data-id”属性中得到的。
在我的控制器方法中,我目前有@application.update_attributes(params[:application])
,但它不包含xposition和yposition,这就是我试图将它们注入哈希的原因。
也许更好的解决方案是在update_attributes命令后手动更新控制器中的x和y位置?
所以它看起来像:
@application.update_attributes(params[:application])
@application.update_xposition(params[:xposition])
@application.update_yposition(params[:yposition])
答案 0 :(得分:1)
您可能希望采用不同的方式。
例如,也许更好的想法是在表单中使用xposition和yposition隐藏字段。
您能告诉我们更多关于您要做什么,x / yposition的内容(如果它们对于每个应用程序都不同,以及它们来自哪里)。
回答你的问题:
app_attrs = {"application_field_attributes"=>{"0"=>{"id"=>"10"}}}
app_attrs["application_field_attributes"]["0"].merge!({
"xposition" => params[:xposition],
"yposition" => params[:yposition]
})
但如果我是你,我不会这样做。