2016-03-24 2 views
1

Я создал раскрывающийся список для сотрудников.Получение значения объекта в коллекции select

  • Что я хочу?

Я хочу выбрать полное имя для каждого из них.

  • Тип формы:

Я использую simple_form. я на самом деле:

= f.input :person_id, label: "Employee", collection: @employee, prompt: "Select employee" 

Результат (я знаю, что есть ссылка):

enter image description here

Перед тем, как использовать collection_select, но simple_form не поддерживает проверку для этого типа коллекции. Код для collection_select. В этом раскрывающемся списке отображается полное полное имя.

= f.collection_select :person_id, @employee, :id, :fullName, {prompt: "Wybierz pracownika"}, {class: "form-control"} 

Обновление: FULLNAME представляет собой метод в модели person.rb.

def fullName 
    "#{first_name} #{last_name}" 
end 

Работник объекта.

@employee = Person.where.not(type: "Client") 

ответ

1

Самый простой способ сделать это:

= f.select :person_id, options_for_select(@employees.map{|e| [e.fullName, e.id]}), {:prompt=>"Wybierz pracownika", :required => true} 

Он покажет полные имена, как выбрать опции и разошлет идентификаторы в качестве значений с формой.

+0

Когда я использую ваш код, возникает синтаксическая ошибка: неожиданный '|', ожидающий ')' –

+0

ответ отредактированный попробуйте прямо сейчас! –

+0

Правильно работать: f.select: person_id, options_for_select (@ employees.map {| e | [e.fullName, e.id]}), {: prompt => "Wybierz pracownika",: required => true} –

1

Вы следуете этот код, как показано ниже:

<%= f.collection_select(:person_id, Model.all, :person_id, :fullName,{:prompt=>"Wybierz pracownika"}, {:class => 'form-control'}) %> 

Вы заменит MODEL_NAME.

Или

= f.input :person_id, label: "Employee", collection: @employee.fullName, prompt: "Select employee" 

Я думаю, что поможет вам

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

  • Нет связанных вопросов^_^