Как получить несколько полей для options_from_collection_for_select

У меня есть следующее в select_tag. Он работает нормально. (Я использую select_tag, потому что это поиск не привязан к модели.)

options_from_collection_for_select(@customers, :id, :first_name)

Текущий вывод HTML:

<option value="4">Fred</option>

Но я хочу:

<option value="4">Fred Flintstone</option>

Я хочу показать полное имя вместо имени. Кажется, я не могу использовать оба поля "first_name" и "last_name", и не могу понять, как заставить его вызвать метод, в котором я объединяю два поля. Как я могу заставить это работать?

Ответ 1

Вы можете определить свою модель:

def name; "#{first_name} #{last_name}";end

и используйте:

options_from_collection_for_select(@customers, :id, :name)

Ответ 2

добавьте метод full_name в вашу модель:

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

и используйте это:

options_from_collection_for_select(@customers, :id, :full_name)

Надеюсь, это поможет.