我正在使用我的第一个Ruby on Rails项目,我试图在选择框中显示用户列表。我想显示所有用户(当前登录的用户除外)。
我现在在我的模型,视图和控制器中使用此代码:
请求控制器:
def new
@request = Request.new
@users = User.without_user(current_user)
end
新请求视图:
<div class="field">
<%= f.label :user_id, 'Select user' %>
<br />
<%= select_tag(:user_id, options_for_select(@users)) %>
</div>
用户模型:
scope :without_user,
lambda{|user| user ? {:conditions =>[":id != ?", user.id]} : {} }
这一切都运行良好,但我的选择框中填充了用户的object_id。例如,如何将该object_id转换为名字/姓氏组合?我尝试过这样的事情:
<%= select_tag(:user_id, options_for_select(@users.first_name)) %>
但这给了我一个'未定义的方法错误'。处理这个问题的最佳方法是什么?
答案 0 :(得分:0)
在视图的select_tag中,您可以:
<%= select_tag(:user_id, options_from_collection_for_select(@users, :id, :first_name)) %>
这会显示first_name,当用户选择其中一个选项时,user id
会填充到select标记的value
属性中。
如果要显示全名,可以在用户模型中使用方法:
def full_name
return first_name + " " + last_name
end
并且,在您看来:
<%= select_tag(:user_id, options_from_collection_for_select(@users, :id, :full_name)) %>
您可以找到有关options_from_collection_for_select
here
答案 1 :(得分:0)
您需要的是options_from_collection_for_select
。
在你的情况下,它将是:
<%= select_tag(:user_id, options_from_collection_for_select(@users, :id, :first_name)) %>
您可以详细了解它和其他助手here