为什么select_tag只显示一列?

时间:2014-03-25 21:28:33

标签: ruby-on-rails ruby

我的视图中有以下 select_tag

   <%= select_tag :users, options_from_collection_for_select(@users, 'id','firstname' , 'lastname') %></p></br>

我想在select_tag中显示firstname和lastname,但它始终显示&#39; id&#39; 之后的第一个参数,在这种情况下是firstname。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

改为使用

<%= select(:users, :id, @users.map {|u| [u.firstname + " " + u.lastname,u.id]}) %>

答案 1 :(得分:0)

我确信options_for_select只允许您放置1)您希望每个选项拥有的值,2)您希望该选项具有的ID或标签。

你要做的是,在你的用户模型中,设置一个方法将用户名和姓连接成一个,然后将其用作你的option_for_select id。

用户模型

def userFullName
   self.firstname+' '+self.lastname
end

然后在你的select_tag中使用它:

<%= select_tag :users, options_from_collection_for_select(@users, 'id','userFullName') %>

答案 2 :(得分:0)

options_from_collection_for_select的Api文档中,您可以获得此信息:

options_from_collection_for_select(collection, value_method, text_method, selected = nil)

如果您只想显示选项,那就是正确的方法。

如果要预先选择一个选项,则仅指定第4个参数。

如果你想连接这个名字,你可以按照Oscar Valdez告诉你的那样去做。

在此处查看options_from_collection_for_select的更多信息:http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/options_from_collection_for_select