首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用ransack宝石搜索所有

禁用ransack宝石搜索所有
EN

Stack Overflow用户
提问于 2016-10-10 22:21:27
回答 1查看 374关注 0票数 0

如何禁用搜索创业板搜索第一次请求中的所有记录?

我拥有数千条记录,并且不希望每次访问该页面时都加载它们。我只想显示搜索表格。

代码语言:javascript
复制
def index
   @search = ransack_params
   @users = ransack_result
end

private
def ransack_params
  User.search(params[:q])
end

def ransack_result
  @search.result(distinct: false)
end

我的控制台的输出显示如下:

代码语言:javascript
复制
Processing by UsersController#index as HTML Parameters: {"utf8"=>"✓", "q"=>{"name"=>""}, "button"=>""}
  Rendering users/index.html.erb within layouts/application
  User Load (0.5ms)  SELECT "users".* FROM "users"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 23:35:02

可以用两种方式来做。

如果params:q是空的,不要迭代用户结果。在尝试使用搜索结果关系的记录之前,不会执行搜索查询。

所以你可以像在你的视野中那样做

代码语言:javascript
复制
unless params[:q].blank?
  # @search.each do ...
end

2-创建一个不产生结果的空范围。

代码语言:javascript
复制
class User < ActiveRecord::Base
  scope :empty_results, -> { where(id: '-1000') }
end

def ransack_params
 if params[:q].blank?
   User.empty_results.search
 else
   User.search(params[:q])
 end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39967639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档