如何使用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 %>