我正在尝试在我的网站上实现Ransack搜索功能。我尝试在Ransack上观看Railscasts,并对如何实现它进行了很好的了解。但是我遇到了一个我似乎无法弄清楚的问题。
在我的用户控制器的索引操作中,我有以下代码:
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
,然后按年龄过滤这些结果。
答案 0 :(得分: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])