我的视图中有以下 select_tag :
<%= select_tag :users, options_from_collection_for_select(@users, 'id','firstname' , 'lastname') %></p></br>
我想在select_tag中显示firstname和lastname,但它始终显示&#39; id&#39; 之后的第一个参数,在这种情况下是firstname。
我做错了什么?
答案 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