2

我有一个带有多选输入的表单,如下所示:

select_tag "activity_types[#{category}]", options_from_collection_for_select(ActivityType.all, "id", "name"), multiple: true

这会生成类似于以下的标记:

<select id="activity_types_category" multiple="multiple" name="activity_types[category][]"><option value="2">Foo</option>
  <option value="3">Bar</option>
  <option value="4">Baz</option>
</select>

这正是我想要的。The issue is that when all options are selected and the form is submitted the url ends up looking something like this:

?activity_types%5Bcategory%5D%5B%5D=2&activity_types%5Bcategory%5D%5B%5D=3&activity_types%5Bcategory%5D%5B%5D=4

这很好用。但是,我遇到了一些问题,即完整的 url 对于第三方服务来说太长了。他们在自己的 url 中使用 url 作为参数。我的 url 导致了 414 Request-URI Too Large 错误。我想知道是否有办法使查询字符串看起来像这样:

?activity_types%5Bcategory%5D%5B%5D=2,3,4

这将解决我遇到的问题并使网址更具可读性。

提前致谢!

4

1 回答 1

1

问题是您通过 URL 在 GET 请求中发送表单数据。一般来说,表单数据应该通过没有这个限制的 POST 发送。

而且您不应该尝试修改 Rails(通过机架)用于构造 params 哈希的请求结构。这样做可能会让你非常头疼……

于 2013-06-06T21:39:11.717 回答