Ruby on rails 如何使用Ransack和Rails构建具有作用域的可单击链接

Ruby on rails 如何使用Ransack和Rails构建具有作用域的可单击链接,ruby-on-rails,ransack,Ruby On Rails,Ransack,我需要在我的应用程序中有一些作用域作为可点击的链接。这将允许用户根据需要更改他们看到的数据。使用Ransack和它的ransackable功能,我非常接近。当用户单击范围时,我确实需要保留已完成的任何过滤搜索 我已经让范围工作,但现在我只需要构建可点击的链接 这是我的模型: class Product < ActiveRecord::Base scope :upward_trending, -> { where( "status > ?", 100).wher

我需要在我的应用程序中有一些作用域作为可点击的链接。这将允许用户根据需要更改他们看到的数据。使用Ransack和它的ransackable功能,我非常接近。当用户单击范围时,我确实需要保留已完成的任何过滤搜索

我已经让范围工作,但现在我只需要构建可点击的链接

这是我的模型:

class Product < ActiveRecord::Base    

    scope :upward_trending, -> { 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
现在在我看来,我已经将这两个作用域添加为隐藏字段,如下所示:

        <%= search_form_for @q, :html => {:class => 'filter-form'} do |f| %>

        <div>

            <%= f.hidden_field :upward_trending %>
            <%= f.hidden_field :downward_trending %>

            <%= f.label :name_cont, "Search", class: 'label' %>
            <%= f.search_field :name_cont, class: 'form-control input-box', :placeholder => 'Search' %>

        </div>

        <div>

            <%= f.submit "Filter", class: 'btn btn-primary' %>
            <%= link_to "Clear Search", request.path, class:"btn btn-default" %>

        </div>
        <% end %>
从这里我只需要创建链接,它应该会工作。。最好的方法是什么


谢谢你的帮助

我打算用肮脏的方式。但是还没有

为每个范围创建搜索表单,您的案例将有2个表单 像在代码中一样,使用自己的条件设置隐藏字段,但每个条件都有自己的形式 使提交按钮看起来像与css链接,我认为这不是很难。你可以看到
不是很干净或优雅。

我通过为每个作用域创建隐藏字段,然后使用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 %>
    <i class="fa fa-chevron-up fa-2x"></i><br>Upward<br>Trending
    <% end %>

嘿@twnaing谢谢你的回答。我认为这样做的挑战在于,它可能会删除主搜索表单中的任何筛选。最后我变得更脏了,我会在回答中告诉你。我误读了,我需要保留。抱歉@bnussey,谢谢你的回答。没问题,希望对你有帮助。