如何使用Ransack和Rails构建带有作用域的可单击链接

我要求在我的应用程序中将一些范围作为可点击链接。 这将允许用户根据需要更改他们看到的数据。 使用Ransack和它的ransackable_scopesfunction我非常接近。 我确实需要保留Ransack在用户点击范围时所做的任何过滤。

我有范围工作,但现在我只需要构建可点击链接。

这是我的模特:

class Product  { where( "status > ?", 100).where(above_revenue_average: true).order('end_date DESC') } scope :downward_trending, -> { where( "status < ?", 100).order('end_date DESC') } def self.ransackable_scopes(auth_object = nil) [:upward_trending, :downward_trending] end end 

现在在我看来,我已将这两个范围添加为隐藏字段,如下所示:

   {:class => 'filter-form'} do |f| %> 
'Search' %>

从这里我只需要创建链接,它应该工作..这是最好的方法是什么?

谢谢你的帮助!

我打算做脏话。 (但还没有)

  • 为每个范围创建search_form_for (您的案例将有2个表单)
  • 使用自己的标准设置隐藏字段(就像在代码中一样,但每个都以自己的forms)
  • make submit按钮看起来像链接(用css我认为这不是很困难。你可以看到Bootstrap按钮显示为链接 )

不是很干净或优雅。

我通过为每个范围创建隐藏字段,然后使用onclick javascript创建一个按钮来实现此目的:

 <%= f.hidden_field :upward_trending %> <%= button_tag(:type => 'submit', :class => 'btn btn-primary scope-button upward_trending', :id => "upward_trending", :onclick => "document.getElementById('q_downward_trending').value = 0; document.getElementById('q_upward_trending').value = 1;") do %> 
Upward
Trending <% end %>