Выпадающее поле в 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] передается контроллеру из представления.