我正在使用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 %>
答案 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 %>