如何向现有的Ransack查询添加搜索参数

时间:2018-07-25 11:25:00

标签: ruby-on-rails ransack

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

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

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

是否有一种方法可以适应@q,以便可以将此"activated" => true添加到所需过滤器的哈希中?

2 个答案:

答案 0 :(得分:0)

我认为您不能这样做,因为如果您单击链接,则不会提交表单,因此不会提交参数。

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

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

这仅在表单已提交一次的情况下起作用,否则参数将为空。

编辑

我假设您的表单上的字段正在填充(如果有值的话)。

例如,

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

答案 1 :(得分:0)

假设您仅使用:q参数进行过滤,则可以对其进行汇总。

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