0

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

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

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

2 回答 2

1

这与Rails和参数解析无关;您正在生成格式错误的 HTML。问题是您在valuehidden 的属性值周围缺少引号<input>

这:

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

需要是这样的:

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

否则,您将产生类似<input ... value=new year />“年份”未作为value属性的一部分解析的内容。

于 2013-01-14T19:55:49.150 回答
0

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

例如:

<% if params[:q] %>
  <%= hidden_field_tag :q, :value => params[:q] %>
<% end %>
于 2013-01-17T04:01:15.710 回答