рельсы: поля_ для выбора - PullRequest
       19

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

11 голосов
/ 10 августа 2009

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

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

Существует ли что-нибудь подобное?

Ответы [ 2 ]

28 голосов
/ 10 августа 2009

Есть несколько методов выбора помощника, которые вы можете использовать. Наиболее распространенным является 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 голосов
/ 10 августа 2009

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

...