我在我的 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
?
笔记:
任务属于属于协作的列表。
我在我的 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
?
笔记:
任务属于属于协作的列表。
显然,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
您还可以定义一个#to_s
方法User
class User
def to_s
"#{user.first_name} #{user.last_name}"
end
end
这样您的收藏可以是:
task.list.collaborators.map { |user| [user.id, user] }