Rails,select_tag:需要在params中返回id和string

时间:2013-08-02 03:09:24

标签: ruby-on-rails ruby

我正在从select_tag的数据中创建active_record。在我的控制器中,我准备了一个适合options_for_select的数组:

@opts = @yap_response["businesses"].map { |bus| [bus["name"], bus["id"]] }

在我看来,我制作了select_tag

<%= select_tag(:restaurant_id, options_for_select(@opts, @party.restaurant.yap_id)) %>

这很好用,我得到了params[:restaurant_id]中所选项目的ID。但是我还需要在下拉列表中显示的字符串 - 在我的例子中是名称。如果这来自active_record,我可以在数据库中查找id,但事实并非如此。而且我不再拥有我之前在其他控制器方法中创建的数据。如何在params[]

中传回所选的名称

1 个答案:

答案 0 :(得分:0)

我认为没有一种干净的方法可以做到这一点。但这里有一些解决方法:

选项1:对值中的ID和名称进行编码,然后使用params[:restaurant_id].split(':')在服务器上拆分它们。

@opts = @yap_response["businesses"].map { |bus| [bus["name"], "#{bus['id']}:#{bus['name']}"] }

options_for_select中的第二个参数也必须是“id:name”。

选项2:添加隐藏字段,然后使用javascript将其值设置为所选名称。但如果您的用户没有启用JavaScript,那么您显然不走运。

选项3 :添加一个填充了@yap_response["business"].to_json的隐藏字段。然后JSON.parse在服务器端,并将名称与params中的ID匹配。