我有一个列出锁集合的下拉菜单。我想在选择一个选项时设置两个参数:
- :name => l.name (与下面的代码一起使用)
:device_id => l.id
<%= f.select(:name, Lock.all.collect {|l| [ l.name ] } ,{:include_blank => true} ) %>
我尝试在 hidden_field 中传递值,但该字段不知道选择的锁。非常感谢任何输入。
我有一个列出锁集合的下拉菜单。我想在选择一个选项时设置两个参数:
:device_id => l.id
<%= f.select(:name, Lock.all.collect {|l| [ l.name ] } ,{:include_blank => true} ) %>
我尝试在 hidden_field 中传递值,但该字段不知道选择的锁。非常感谢任何输入。
那么您需要在控制器端获取两个值吗?
前任:-
我的数据库中有以下值
ID Name
4 gggg
5 tttt
2 iiii
因此,如果您从服务器的下拉列表中选择 tttt,则下拉列表将显示所有名称 gggg、tttt、iiii,您需要 5、tttt对吗?
然后你需要使用下面的代码
在控制器中
@locks = Lock.all.map{|l| [l.name, "#{l.id};#{l.name}"]}
在你看来
<%= select_tag(:name, options_from_collection_for_select(@locks) )%>
所以它将发送由“;”分隔的 id 和 name 值 .
在您的控制器中,您需要用“;”分割
您好,您可以这样做:
<%= select_tag(:name, options_from_collection_for_select(Lock.all, :id, :name, params[:name]) )%>
或在您的控制器中添加以下代码:
@locks = Lock.find(:all)
在你看来
<%= select_tag(:name, options_from_collection_for_select(@locks, :id, :name, params[:name]) )%>
当您提交包含此 select_tag 的表单时,params[:name] 将从您的应用程序的 url 中获取选定的名称。
希望能帮助到你。