我在Rails(3.1)应用程序的Ruby(1.9.3)中使用以下视图代码来编辑任务所属的人。
=simple_form_for task do |f|
=f.input :owner, collection: task.list.collaborators
产生以下选择下拉列表。
如何告诉它显示用户的first_name
和last_name
?
注意:
任务属于属于协作的列表。
答案 0 :(得分:5)
显然,task.list.collaborators
需要以[[key,value],[key,value]]的嵌套数组形式出现。一种简单的方法:
task.list.collaborators.map{|user| [user.id, "#{user.first_name} #{user.last_name}"]}
或者,您可以执行以下操作。如您所希望的那样向用户添加方法:
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
答案 1 :(得分:0)
您还可以在#to_s
User
方法
class User
def to_s
"#{user.first_name} #{user.last_name}"
end
end
这样你的收藏可以是:
task.list.collaborators.map { |user| [user.id, user] }