Rails:如何将带有加号的params从url传递给控制器​​?

时间:2013-01-14 19:33:44

标签: ruby-on-rails url params pg-search

我正在使用pg_search宝石。 当我使用输入传递参数时,搜索工作正常。但是当我尝试将查询参数从url传递给我的控制器进行一些高级过滤时,它就失败了。 网址类似于http://localhost:3000/search?q=new+year,我的控制器将params[:q]显示为new而不是new year。我一直在阅读文档和谷歌搜索几个小时,但无法找到我的问题的解决方案。 如何将带有加号的参数从url传递给控制器​​?

编辑:我使用表单将param作为隐藏字段传递。在我的视图文件中:

  <% if params[:q] %>
    <input name="q" type="hidden" value=<%= params[:q] %>>
  <% end %>

2 个答案:

答案 0 :(得分:1)

这与Rails和参数解析无关;你正在制作格式错误的HTML。问题是,您隐藏了隐藏value的{​​{1}}属性值附近的引号。

此:

<input>

需要这样:

value=<%= params[:q] %>>

否则,您将生成类似value="<%= params[:q] %>"> 的内容,其中“year”未被解析为<input ... value=new year />属性的一部分。

答案 1 :(得分:0)

你不应该建立这样的标签。而是使用内置的Rails输入标记助手。

例如:

<% if params[:q] %>
  <%= hidden_field_tag :q, :value => params[:q] %>
<% end %>