Рельсы: поля для выбора

В представлении, которое у меня есть, я использую fields_for для отображения данных формы для реляционной таблицы. Тем не менее, часть этой формы будет иметь избранные списки на выбор. Я вижу, что есть метки, текстовые поля, текстовые помощники для form_for и fields_for помощников, которые заполнят информацию, необходимую из уже заполненного объекта модели... но как насчет помощника списка выбора, который будет делать то же самое?

Это было бы особенно полезно, если у меня есть отношение "один ко многим", поскольку поля_имя повторяются через каждый элемент, который уже находится в объекте модели, и отображает его с индексом.

Есть ли что-нибудь подобное?

Ответ 1

Существует несколько методов выбора помощника, которые вы можете использовать. Наиболее распространенным является collection_select. Это здорово, если у вас есть ассоциация belongs_to на модели, и вы хотите использовать меню выбора, чтобы установить это.

<%= f.collection_select :category_id, Category.all, :id, :name %>

В других ситуациях существует более общий select метод. Здесь вы можете предоставить набор параметров, которые вы хотите предоставить.

<%= f.select :priority, [["Low", 1], ["Medium", 2], ["High", 3]] %>

Первое значение в каждом элементе массива - это имя параметра выбора, второе - значение, которое будет присвоено атрибуту.

Есть много других меню выбора (для дат и времени), но вышеприведенные два должны охватывать большинство ситуаций. Эти методы работают как на form_for, так и на fields_for.

Ответ 2

Вы ищете select или collection_select. Оба могут использоваться в form_for или fields_for для блоков. Существуют примеры того, как их использовать в form_for в документации