2013-10-25 43 views
0

我想要創建一個任務並將其分配給特定用戶,該用戶具有名字和姓氏的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> 

集合中選擇我應該顯示類似「薩姆·帕克([email protected])」像這樣所有用戶應該在收集選擇域可用。

任何人都可以幫助我如何顯示它。

+0

您是否看過導軌指南,它提供了有關該主題的良好信息。以下是鏈接:http://guides.rubyonrails.org/form_helpers.html#making-select-boxes-with-ease – Brock90

回答

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> 

請注意,t他形成了assigned_to_id而不是assign_to紅寶石物體。 Rails將基於這個id實例化對象assign_to