如何在用户按下搜索按钮之前在meta_search中设置一个0的结果



我在rails 3应用程序上使用meta_search。默认情况下(在按下搜索按钮之前)meta_search返回搜索模型的所有元素。我想在用户按下搜索按钮或搜索参数为空之前设置0结果。

我使用meta_search如下:

def index
 @search = Article.search(params[:search])
  if params[:search].blank?
    @places = nil
  else
    @places = @search.all
  end
end

如果搜索参数为空,设置0结果的最佳方法是什么?

谢谢

我不认为这是Meta Search真正提供的东西,但你总是可以欺骗它。

def index
  @search = Article.search(params[:search].presence || {:id_lt => 0})
  @places = @search.all
end

我认为你的解决方案已经足够好了。很清楚它在做什么,它不会不必要地访问数据库。但是代码可以改进为:

def index
  @search = Article.search(params[:search])
  @places = @search.search_attributes.values.all?(&:blank?) ? [] : @search.all
end

检查哈希是否为空白不是这样做的。如果提交的表单是空白的,那么像{'name_contains' => ''}这样的散列将返回false

最好将@places设置为空数组而不是nil。这样你就不需要检查nil,你的循环仍然可以工作。

相关内容

  • 没有找到相关文章

最新更新