Выпадающее поле в Rails

Как использовать Rails для создания раскрывающегося списка? Скажем, выполнил ли я запрос:

@roles = Role.all

Тогда как я могу отобразить поле со всеми @role.name?

РЕДАКТИРОВАТЬ: После внедрения раскрывающегося списка. Как я могу реагировать на выбор? Должен ли я сделать форму?

Ответ 1

используйте помощник collection_select http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#M001593

Это позволит вам написать что-то вроде:

collection_select(:user, :role_id, @roles, :id, :role_title, {:prompt => true})

И получите

<select name="user[role_id]">
  <option value="">Please select</option>
  <option value="1" selected="selected">Administrator</option>
  <option value="2">User</option>
  <option value="3">Editor</option>
</select>

Ответ 2

Это создаст выпадающий список, отображающий имя роли в раскрывающемся списке, но использует role_id как значение, переданное в форме.

select("person", "role_id", @roles.collect {|r| [ r.name, r.id ] }, { :include_blank => true })

Ответ 3

Помощник формы имеет группу методов, специально написанных для создания выпадающих списков выбора. Обычно вы используете метод select_tag для создания раскрывающихся списков, но в вашем случае вы можете использовать collection_select, который принимает модель ActiveRecord и автоматически заполняет форму. На ваш взгляд:

<%= collection_select @roles %>

Узнайте больше о помощнике формы Rails: http://guides.rubyonrails.org/form_helpers.html

Ответ 4

Отобразить имя роли в виде comboBox, отображая текст (первый аргумент скрепки), и он представляет идентификатор роли

контроллер

@roles = Role.pluck(:name, :id)

Вид

<%= select("role", "role_id", @roles) %>

params [: role] [: role_id] передается контроллеру из представления.