Я потратил довольно много времени на перестановку тегов выбора.
collection_select
создает тег выбора из коллекции объектов.Помня об этом,
object
: название объекта.Это используется для генерации имени тега и для генерации выбранного значения.Это может быть реальный объект или символ - в последнем случае переменная экземпляра с таким именем ищется в привязке ActionController
(то есть :post
ищет экземплярВ вашем контроллере var вызывается @post
.)
method
: название метода.Это используется для генерации имени тега. Другими словами, атрибут объекта, который вы пытаетесь получить из select
collection
: Коллекция объектов
value_method
: для каждого объекта в коллекции этот метод используется для значения
text_method
: для каждого объекта в коллекции этот метод используется для отображения текста
Необязательные параметры:
options
: параметры, которые вы можете передать.Они задокументированы здесь под заголовком Опции.
html_options
: все, что здесь передано, просто добавляется к сгенерированному тегу html.Если вы хотите указать класс, идентификатор или любой другой атрибут, он указывается здесь.
Ваша ассоциация может быть записана как:
collection_select(:user, :plan_ids, Plan.all, :id, :name, {:prompt => true, :multiple=>true })
Что касаетсяиспользуя form_for
, опять же в очень простых терминах, для всех тегов, которые входят в form_for
, например.f.text_field
, вам не нужно указывать первый (object
) параметр.Это взято из синтаксиса form_for
.