我正在尝试使用搜索参数对话框制作多选下拉菜单。我可以进行下拉多选,但似乎无法获取/传递结果数据。(编辑/新信息将以斜体显示)
我相信问题的根源在于我需要更改控制器中的 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*
Run Code Online (Sandbox Code Playgroud)
我添加了 :categories_attributes => [:name] 以尝试让控制器允许散列,但这不起作用。
选择字段是
<%= f.select :category[], options_for_select(@categories.sort), {:include_blank => true}, {:multiple => true, :size =>10} %>
Run Code Online (Sandbox Code Playgroud)
但这给了我
.erb 其中第 41 行提出:
参数数量错误(0 表示 1..2)模板包含的痕迹:app/views/searches/new.html.erb
我以为我必须使用 [] 将类别设置为数组,但显然我遗漏了一些东西。
类别是搜索表中的字符串字段。
[]字段名称后面不需要括号,因为 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>
Run Code Online (Sandbox Code Playgroud)
params[:search][:category]在您的情况下,选定的值将在提交表单后作为数组提供。
如果您使用强参数,还要确保您:category => []在许可列表中。
| 归档时间: |
|
| 查看次数: |
12341 次 |
| 最近记录: |