Получение значения объекта в коллекции 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"

Я думаю поможет тебе

Другие вопросы по тегам