2014-03-25 65 views
0

我见,我认为以下select_tag为什么select_tag只显示一列?

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

我想显示在select_tag名字和姓氏,但它总是在这种情况下显示的第一个参数“ID”后名字。

我在做什么错了?

回答

1

使用这个代替

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

THX @all的帮助! – dot

+0

很高兴帮助:) –

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') %> 
0

从API文档为options_from_collection_for_select,你可以得到这样的:

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

如果你只是想以显示选项,这是做到这一点的正确方法。

如果您想要预先选择一个选项,则只能指定第四个参数。

如果你想连接名称,你可以这样做,因为奥斯卡瓦尔迪兹告诉你。为options_from_collection_for_select这里

检查的详细信息:http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/options_from_collection_for_select

相关问题