我的网址为http://www.example.com?foo=one\u0026amp;foo=two
我想为foo得到一个值数组[‘one’,’two’],但是params [:foo]只返回第一个值.
我知道如果我在URL中使用foo []而不是foo,那么params [:foo]会给我所需的数组.
但是,我希望尽可能避免更改URL的结构,因为它的表单作为规范提供给客户端应用程序.是否有一种很好的方法来获取所有值而不更改参数名称?
解决方法
您可以使用默认的
Ruby CGI模块来解析Rails控制器中的查询字符串,如下所示:
params = CGI.parse(request.query_string)
这将为您提供所需的内容,但请注意,您不会获得任何Rails其他扩展来查询字符串解析,例如使用HashWithIndifferentAccess,因此您将不得不使用String而不是Symbol键.
另外,我不相信你可以用一行设置这样的参数并覆盖默认的rails参数内容.根据您希望进行此更改的程度,您可能需要修补或修改内部结构.然而,如果你想要进行全局更改,那么快速的事情就是将它放在application.rb中的before过滤器中并使用像@raw_params这样的新实例var