Rails 表单:如何附加请求参数?

Mik*_*zev 6 ruby forms ruby-on-rails

我有一个列表页面,我通过带有 get params 的链接过滤项目(我可以选择许多链接,因此查询就像"?param1=value1&param2=value2")。但我也必须按文本字段过滤它,所以我做了一个表格:

<form>
  <%= text_field_tag :zip, params[:zip] %>
  <%= submit_tag 'OK', :name => nil %>
</form>
Run Code Online (Sandbox Code Playgroud)

但是当我提交时,文本字段参数会替换现有的查询参数。那么,如何使文本字段值添加到查询中,而不是替换它呢?

小智 5

因为我只是在 Rails 4 中处理这个问题,所以我想我会分享我的解决方案。我的页面加载了一个 Sport_id 参数,当用户指定排序顺序时,我希望它提交对 page.url/event?sport_id=1&sortby=viewers 的 GET 请求,但在我添加之前它不会保留 sport_id 参数表单中的隐藏字段标记,如下所示:

<%= hidden_field_tag :sport_id, params[:sport_id] %>
Run Code Online (Sandbox Code Playgroud)

如果该参数不在原始请求中,则此解决方案确实会提交一个空的 Sport_id 参数,但是通过将隐藏字段封装在 <% if params[:sport_id].present? %> 条件。


fl0*_*00r 1

铁轨3?

<%= form_tag your_path(params.except(:controller, :action)), :method => :get do %>
  <%= text_field_tag :zip, params[:zip] %>
  <%= submit_tag 'OK', :name => nil %>
<% end %>
Run Code Online (Sandbox Code Playgroud)