设置多个属性选择Rails 3

时间:2013-05-07 03:50:24

标签: ruby-on-rails-3 drop-down-menu

我有一个下拉菜单,列出了一系列锁。我想在选择一个选项时设置两个参数:

  1. :name => l.name(使用下面的代码)
  2. :device_id => l.id

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

  3. 我已尝试在hidden_​​field中传递值,但该字段不知道所选的锁。任何输入都非常感谢。

2 个答案:

答案 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值

在您的控制器中,您需要拆分“;”