2013-10-25 2 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 будет создавать объект assign_to на основе этого идентификатора.

Смежные вопросы