我有一个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])
你可能想要做不同的。
也许一个更好的主意是在表单中使用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]
})
但如果我是你,我就不会那样做。