2

我正在嘗試在我的網站上實現搜索功能的Ransack。我試着看Ransack上的Railscasts,並對如何實現它有了一個很好的想法。但我遇到了一個我似乎無法解決的問題。如何使用Ransack篩選結果

在我的用戶控制器的索引動作,我有以下代碼:

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

@usersActiveRecord::Relation對象。 @users實質上是捕獲與current_user屬於同一城市的所有用戶。在我看來,我能夠遍歷@users並顯示與current_user屬於同一城市的所有用戶。這很好。現在我希望能夠根據用戶提供的年齡範圍過濾這些結果。每個電視廣播,我可以這樣做:

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

但是我沒有相同的城市範圍了。我想要的是默認顯示與current_user屬於同一城市的所有用戶,然後按年齡過濾這些結果。

回答

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]) 
+0

這個偉大的工程。但是,現在我有另一個問題打開。 http://stackoverflow.com/questions/15849569/undefined-method-error-for-search-using-ransack-gem – pratski 2013-04-06 10:12:48