Получение значения объекта в коллекции select
Я создал выпадающий список для сотрудников.
- Что я хочу?
Я хочу выбрать полное имя для каждого из них.
- Тип формы:
Я использую simple_form. У меня на самом деле есть:
= f.input :person_id, label: "Employee", collection: @employee, prompt: "Select employee"
Результат (я знаю, что это ссылка):
Прежде чем я использую 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")
2 ответа
Решение
Самый простой способ сделать это:
= f.select :person_id, options_for_select(@employees.map{|e| [e.fullName, e.id]}), {:prompt=>"Wybierz pracownika", :required => true}
Он будет показывать полные имена в качестве параметров выбора и отправлять идентификаторы как значения с формой.
Вы следуете этому коду, как показано ниже:
<%= f.collection_select(:person_id, Model.all, :person_id, :fullName,{:prompt=>"Wybierz pracownika"}, {:class => 'form-control'}) %>
Вы замените свое имя модели.
Или же
= f.input :person_id, label: "Employee", collection: @employee.fullName, prompt: "Select employee"
Я думаю поможет тебе