-->

在洗劫设置默认搜索参数钢轨(Setting default search parameter on

2019-08-02 11:24发布

我一直令人头大我的大脑在这一点,但不能得到它。 我觉得答案很可能是明显的。

我正在试图做的是以下几点:

我有一个索引控制器,它列出了一系列的工作,我可以用洗劫搜索。 每个作业中有哪些要么有一个日期或为空(未完成)完成日期。 目前,搜索本身的伟大工程。 我想让这个索引页面加载仅显示未完成的工作,但我也希望它的工作,这样,当有人不执行搜索,返回既完成和尚未完成的工作成果。

任何帮助将不胜感激。 在下面的代码, :actual与完成日期字段的名称。 我也一直在寻找各地的网络,认为也许有点像DEFAULT_SEARCH_PARAMETER={}我在作业模式可能会奏效,但我似乎无法得到它的。 下面是代码:

class Job < ActiveRecord::Base
  DEFAULT_SEARCH_PARAMETER ={}
  attr_accessible :items_attributes, :actual
end

def index
   @search = Job.search(params[:q] || Job::DEFAULT_SEARCH_PARAMETER)
   @search.build_condition
   @results = @search.result
   @job = @results.paginate(:per_page => 10, :page => params[:page])
end

Answer 1:

我想你可以只应用自己的过滤器时不存在的搜索参数:

def index
  @search = Job.search(params[:q])
  @results = @search.result
  @results = @results.where(:your_date => nil) unless params[:q]
  @job = @results.paginate(:per_page => 10, :page => params[:page])
end


Answer 2:

迟到了,但认为我建议的情况下,别人遇到这一种替代方法。

上述工程的答案,但它的缺点是默认不加入洗劫的搜索对象,所以 - 如果你正在使用搜索形式 - 默认选择不显示在表单。

下面的方法增加了默认为搜索对象,因此就会出现在你的搜索形式。

def index
  @search = Job.search(params[:q])
  @search.status_cont = 'Open' unless params[:q] #or whatever, must use Ransack's predicates here
  @results = @search.result
  @job = @results.paginate(:per_page => 10, :page => params[:page])
end


Answer 3:

所以在默认情况下,你想要的页面记录,其中实际是零负载。 而当用户搜索你想回到你的搜索是如何工作的前后面。

试试这个。

def index
   @search = Job.search(params[:q] || Job::DEFAULT_SEARCH_PARAMETER)
   @search.build_condition
   @results = @search.result
   if @results.nil?
        @results=Job.find(:all, :conditions => ["actual = NULL"] )
   end

   @job = @results.paginate(:per_page => 10, :page => params[:page])
end    


文章来源: Setting default search parameter on Ransack for rails