在我的 activeadmin 应用程序中,我需要过滤将出现在索引视图中的记录。
对于我的“Group”模型,收集方法效果很好,但对于“Item”模型,它不起作用并返回以下错误:
undefined method `page' for #<Array:0xc240bc4>
我在 admin/items.rb 中使用此代码:=> 不起作用
collection_action :index, :method => :get do
# Only get the items belonging to a group owned by the current user
scope = Group.where("owner_id = ?", current_user.id).map{|group| group.items}
@collection = scope.page() if params[:q].blank?
@search = scope.metasearch(clean_search_params(params[:q]))
respond_to do |format|
format.html {
render "active_admin/resource/index"
}
end
end
在 admin/groups.rb 中,以下工作正常(仅显示正确的组)
collection_action :index, :method => :get do
# Only get the groups owned by the current user
scope = Group.where("owner_id = ?", current_user.id).scoped
@collection = scope.page() if params[:q].blank?
@search = scope.metasearch(clean_search_params(params[:q]))
respond_to do |format|
format.html {
render "active_admin/resource/index"
}
end
end
我无法弄清楚为什么这不适用于“项目”模型。任何想法 ?
编辑
我找到了一种解决方法,只获取属于 current_user 的第一组的项目:
scope = Group.where("owner_id = ?", current_user.id).first.items.scoped
现在没关系,因为用户只有一个组,但这在不久的将来不适合。