我想创建一个任务并分配给具有名字和姓氏的has_one个人资料的特定用户。
还有用户has_many任务。
我的新任务表单是
<%= form_for :task do |f| %>
<div>
<%= f.label :task %>
<%= f.text_area :task %>
</div>
<div>
<%= f.label :assigned_to %>
<%= f.collection_select(:assigned_to, User.profile.all, :fist_name, :fist_name, :include_blank => 'None')%>
</div>
在集合中选择我应该显示类似“Sam Parker(sam@org.com)”的内容,这样所有用户都应该在集合选择字段中可用。
任何人都可以帮我如何显示它。
答案 0 :(得分:0)
首先阅读文档:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-collection_select
我猜你需要创建一个返回选项文本的方法,例如:
class User < ActiveRecordBase
# ...
def label_for_select
"#{profile.full_name} (#{profile.email})"
end
end
然后,在您的视图中,它将类似于:
<div>
<%= f.label :assigned_to_id %>
<%= f.collection_select(:assigned_to_id, User.all, :id, :label_for_select, :include_blank => 'None')%>
</div>
请注意,表单设置assigned_to_id
而不是assign_to
ruby对象。 Rails将根据此id实例化assign_to
对象。