我正在尝试使用搜索参数对话框进行多选下拉列表。我可以将下拉菜单多选,但似乎无法获取/传递结果数据。 (编辑/新信息将以斜体显示)
我认为问题的根源是我需要更改控制器中的permit部分以反映我传递的是散列/数组。如果我查看结果记录,我设置为多选的2个字段显示为nil。但是,如果我强制执行错误,则rails显示的参数会显示正确的选项。因此,我认为问题可能出在许可部分。
看起来像
*def search_params
params.require(:search).permit(:document_title,
:summary,
:owner,
:category,
:file_name,
:doc_to_email,
:categories_attributes => [:name])
end*
我添加了:categories_attributes => [:name]试图让控制器允许哈希但是没有用。
选择字段是
<%= f.select :category[], options_for_select(@categories.sort), {:include_blank => true}, {:multiple => true, :size =>10} %>
但是这给了我
.erb第41行引出:
错误的参数数量(0表示1..2)模板包含的跟踪: 应用程序/视图/搜索/ new.html.erb
我认为我必须将类别设置为带有[]的数组,但显然我错过了一些东西。
Category是Searches表中的字符串字段。
答案 0 :(得分:4)
字段名称后面不需要[]
括号,因为Rails会自动添加这些括号。
请参阅此处的示例: http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag
select_tag "colors", "<option>Red</option><option>Green</option><option>Blue</option>".html_safe, multiple: true
# => <select id="colors" multiple="multiple" name="colors[]"><option>Red</option>
# <option>Green</option><option>Blue</option></select>
在您提交表单后,所选值将在params[:search][:category]
中以数组形式提供。
如果您使用强参数,请确保您在许可列表中有:category => []
。