如何将搜索参数添加到现有的Ransack查询中



我在页面上有一个搜索表单,允许用户根据多个条件筛选列表。现在我想在列表顶部添加快速链接以应用范围。我这样试过:

= link_to "Visited", q: {"activated" => true}

虽然这会过滤列表以仅显示激活的项目,但也会重置搜索查询。换句话说,它不记得表单中已经过滤过的内容。

有没有一种方法可以调整@q,以便我可以将此"activated" => true添加到所需过滤器的哈希中?

假设您只使用:q param进行筛选,则可以聚合它。

= link_to "Visited", q: (params[:q] || {}).merge(activated: true)

我认为你不能,因为如果你点击一个链接,你就不会提交表单,因此参数也不会被提交。

将链接中的参数传递到将发送参数(如果存在(:

= link_to "Visited", q: {"activated" => true, "your_params" => params}

不过,只有在表单提交过一次的情况下,这才会起作用,否则params将为空。

编辑

如果有值,我假设表单上的字段正在填充。

例如,

<%= text_field_tag(:email, if !params["email"].nil? then params["ip_email"] end) %>

最新更新