2

我正在尝试在我的网站上为搜索功能实施 Ransack。我尝试在 Ransack 上观看 Railscast,并很好地了解了如何实现它。但是我遇到了一个我似乎无法弄清楚的问题。

在我的用户控制器的索引操作中,我有以下代码:

def index
   @users = User.same_city_as(current_user)
end

@users是一个ActiveRecord::Relation对象。@users本质上是捕获所有与current_user. 在我看来,我能够遍历@users并显示与current_user. 这一切都很好。现在我希望能够根据用户提供的年龄范围过滤这些结果。根据 Railcasts,我可以这样做:

def index
  @search = User.search(params[:q])
  @Users = @search.result
end

但后来我不再有相同的城市范围了。我想要的是默认显示属于同一城市的所有用户current_user,然后按年龄过滤这些结果。

4

1 回答 1

2

Ransack 与范围一起使用,因此您可以轻松链接自己的范围。

假设User.same_city_as返回一个范围(一个ActiveRecord::Relation实例),您可以简单地这样做:

@search = User.same_city_as(current_user).search(params[:q])
@users = @search.result

@search.result返回一个范围,因此您可以对其应用进一步的修改,例如分页。

使用Kaminari,这可能看起来像:

@search = User.same_city_as(current_user).search(params[:q])
@users = @search.result.page(params[:page])
于 2013-04-06T09:19:25.613 回答