在下拉选择框中显示名称

时间:2013-10-25 07:17:29

标签: ruby-on-rails html-select

我想创建一个任务并分配给具有名字和姓氏的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)”的内容,这样所有用户都应该在集合选择字段中可用。

任何人都可以帮我如何显示它。

1 个答案:

答案 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对象。