我一直令人头大我的大脑在这一点,但不能得到它。 我觉得答案很可能是明显的。
我正在试图做的是以下几点:
我有一个索引控制器,它列出了一系列的工作,我可以用洗劫搜索。 每个作业中有哪些要么有一个日期或为空(未完成)完成日期。 目前,搜索本身的伟大工程。 我想让这个索引页面加载仅显示未完成的工作,但我也希望它的工作,这样,当有人不执行搜索,返回既完成和尚未完成的工作成果。
任何帮助将不胜感激。 在下面的代码, :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
我想你可以只应用自己的过滤器时不存在的搜索参数:
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
迟到了,但认为我建议的情况下,别人遇到这一种替代方法。
上述工程的答案,但它的缺点是默认不加入洗劫的搜索对象,所以 - 如果你正在使用搜索形式 - 默认选择不显示在表单。
下面的方法增加了默认为搜索对象,因此就会出现在你的搜索形式。
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
所以在默认情况下,你想要的页面记录,其中实际是零负载。 而当用户搜索你想回到你的搜索是如何工作的前后面。
试试这个。
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