Атрибут отображения Ruby on Rails collection_select

Я новичок в Rails и работаю с методом collection_select.

У меня есть два поля, которые я хотел бы отобразить в своем поле выбора:

first_name и last_name

Пока, я могу отображать только один или другой, не оба.

Здесь код, с которым я работаю:

collection_select(:hour,:shopper_id,@shoppers,:id,"last_name")

Спасибо.

Ответ 1

Добавьте метод full_name к shopper модели:

class Shopper < ActiveRecord::Base
  #.....
  # add this
  def full_name
    "#{first_name} #{last_name}"
  end
end

И измените оператор collection_select:

collection_select(:hour,:shopper_id,@shoppers,:id,:full_name)

Это связано с тем, что большинство помощников Rails принимают имена методов в качестве параметров, поэтому collection_select, который принимает параметр text_method, который является имя метода, который будет вызываться для генерации текста самой опции, поэтому мы определяем метод full_name, и мы передаем его имя в collection_select.