提交后在控制器中获取select_tag键值对

时间:2017-05-25 09:38:24

标签: ruby-on-rails

我正在视图中创建一个选择框:

<% contact = Contacts.all.map{|x| [x.name.to_s.capitalize] + [x.id]} %>
<%= select_tag("selectedContact", options_for_select(contacts)) %>

并在控制器中获取所选值,如下所示:

contact_id = params[:selectedContact]

现在在某些情况下我还需要匹配联系人姓名。有什么办法可以同时获得所选联系人的身份和姓名吗?

2 个答案:

答案 0 :(得分:2)

使用,[{ x[:name] => x[:id]}]

<% contact = Contacts.all.map{|x| [x.name.to_s.capitalize] + [{ x[:name] => x[:id]}]} %>

在控制器中,

contact_name = params[:selectedContact].keys[0]
contact_id = params[:selectedContact][contact_name]

答案 1 :(得分:0)

感谢@Sravan,我通过在视图中将id与name连接,然后在控制器中将其拆分以获取id和name来实现。 在视图中:

<% contact = Contacts.all.map{|x| [x.name.to_s.capitalize] + [x.id.to_s+'_'+x.name.to_s]} %>

并在控制器中:

contact_id = params[:selectCPA].split('_')[0]
contact_name = params[:selectCPA].split('_')[1]