2013-05-07 71 views
0

我有一个下拉菜单,列出了一组锁。我想设置两个参数当选择一个选项:设置多个属性选择表单导轨3

  1. :名称=> l.name(其与下面的代码作品)
  2. :DEVICE_ID => l.id

    <%= f.select(:name, Lock.all.collect {|l| [ l.name ] } ,{:include_blank => true}) %>

我试过在隐藏字段中传递值,但字段不知道被选中的锁。任何输入都非常感谢。

回答

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]将从您的应用的url中获取所选名称。

希望它有帮助。

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值“; “ 。

在您的控制器中,您需要按“;”分割。