如何使用Rails创建下拉选择框?假设我已经完成了查询:
@roles = Role.all
然后如何显示包含所有@ roles.name的框?
编辑:实施下拉框后。如何让它响应选择?我应该制作表格吗?
答案 0 :(得分:45)
使用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>
答案 1 :(得分:15)
这将创建一个下拉列表,在下拉列表中显示角色名称,但使用role_id作为表单中传递的值。
select("person", "role_id", @roles.collect {|r| [ r.name, r.id ] }, { :include_blank => true })
答案 2 :(得分:3)
表单助手具有一组专门用于创建下拉选择框的方法。通常,您将使用 select_tag 方法创建下拉框,但在您的情况下,您可以使用collection_select,它采用ActiveRecord模型并自动从中填充表单。在您看来:
<%= collection_select @roles %>
在此处了解有关Rails表单助手的更多信息:http://guides.rubyonrails.org/form_helpers.html
答案 3 :(得分:1)
将角色名称显示为显示文本的comboBox(第一个pluck参数),它代表角色ID
控制器
@roles = Role.pluck(:name, :id)
查看
<%= select("role", "role_id", @roles) %>
params [:role] [:role_id] 从视图传递给控制器。