Rails如何将元素插入到现有哈希中

时间:2013-01-21 02:34:46

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个将数据发送到我的控制器的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])

1 个答案:

答案 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]
})

但如果我是你,我不会这样做。