如何进行rails多选下拉列表工作

时间:2015-12-23 12:46:16

标签: ruby-on-rails

我正在尝试使用搜索参数对话框进行多选下拉列表。我可以将下拉菜单多选,但似乎无法获取/传递结果数据。 (编辑/新信息将以斜体显​​示)

我认为问题的根源是我需要更改控制器中的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表中的字符串字段。

1 个答案:

答案 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 => []