我在Ruby (1.9.3) on Rails (3.1)应用程序中使用以下视图代码来编辑任务的所有者。
=simple_form_for task do |f|
=f.input :owner, collection: task.list.collaborators这将生成以下选择下拉列表。

如何告诉它显示用户的first_name和last_name?
注意:
任务属于属于协作的列表。
发布于 2012-04-03 11:50:48
显然,task.list.collaborators需要以嵌套数组的形式存在,如[key,value,key,value]。一个简单的方法就是:
task.list.collaborators.map{|user| [user.id, "#{user.first_name} #{user.last_name}"]}或者,您可以执行以下操作。向User添加一个您想要显示的方法:
class User
def select_label
"#{user.first_name} #{user.last_name}"
end
end然后使用:label_method和:value_method参数:
f.input :owner,
collection: task.list.collaborators,
label_method: :select_label,
value_method: :id发布于 2015-06-09 21:41:15
您还可以在User上定义#to_s方法
class User
def to_s
"#{user.first_name} #{user.last_name}"
end
end这样你的收藏就可以是:
task.list.collaborators.map { |user| [user.id, user] }https://stackoverflow.com/questions/9986785
复制相似问题