我有一个下拉菜单,列出了一系列锁。我想在选择一个选项时设置两个参数:
:device_id => l.id
<%= f.select(:name, Lock.all.collect {|l| [ l.name ] } ,{:include_blank => true} ) %>
我已尝试在hidden_field中传递值,但该字段不知道所选的锁。任何输入都非常感谢。
答案 0 :(得分:0)
您好,您可以这样做:
<%= 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]将从您应用的网址中获取所选名称。
希望它有所帮助。
答案 1 :(得分:0)
那么你需要在控制器端获得两个值吗?
前: -
我的数据库中有以下值
ID Name
4 gggg
5 tttt
2 iiii
所以下拉列表会显示所有名称gggg,tttt,iiii如果你从服务器的下拉列表中选择tttt你需要5,tttt 对吗?
然后你需要使用下面的代码
在控制器中
@locks = Lock.all.map{|l| [l.name, "#{l.id};#{l.name}"]}
在你看来
<%= select_tag(:name, options_from_collection_for_select(@locks) )%>
因此它将发送由“;”saparated的id和name值
在您的控制器中,您需要拆分“;”