首页 > 解决方案 > 具有多个值的 Rails select_tag 仅发送第一个

问题描述

我制作了一个带有select_tag multiple. 当我提交表单时,我得到的参数是"category_id"=>"3"(我想要一个数组:/),而 url 就像 : http://localhost:5000/wods?category_id=1&category_id=3。我debugger在提交表单上放了一个:$('form').serialize()returns "category_id%5B%5D=3&category_id%5B%5D=4",所以参数设置正确,但不在控制器中。

如果我输入网址http://localhost:5000/wods?category_id[]=1&category_id[]=3,它会发送正确的参数"category_id"=>["3","1"]

我做错了什么:/?这是我的代码:

<%= form_with url: sessions_update_path, method: :get, local: true, id: 'filters' do %>
  <%= select_tag "category_id[]",
              options_for_select(Category.all.order(:name).pluck(:name, :id), session[:categories]),
              multiple: true,
              class: 'select2',
              include_blank: true %>
  <%= submit_tag t('actions.filter'), class: 'btn mr-10' %>
<% end %>

非常感谢您的帮助 !

更新 :

好的,我知道发生了什么。我对我的 url 参数有一个before_actionwhich 调用encode_www_form,它不处理多个值参数。我会找到这种方法的解决方法。谢谢您的帮助。

标签: ruby-on-railsforms

解决方案


推荐阅读