ActiveAdmin:如何覆盖索引控制器动作:nil的未定义方法`base':NilClass

Nic*_*nil 7 ruby-on-rails ruby-on-rails-3 activeadmin

我正在尝试覆盖ActiveAdmin控制器的索引操作,以显示current_user的结果而不是所有结果.

controller do
  def index
    @user_tasks = UserTask.where(:user_id => current_user.id).page(params[:page])
  end
end
Run Code Online (Sandbox Code Playgroud)

访问ActiveAdmin时,抛出异常:

ActionView::Template::Error (undefined method `base' for nil:NilClass):
    1: render renderer_for(:index)
Run Code Online (Sandbox Code Playgroud)

我正在使用rails 3.1和最新的ActiveAdmin版本.gem "activeadmin", :git => 'https://github.com/gregbell/active_admin.git'.

Nic*_*nil 9

我不知道为什么

controller do
    def index
      index! do |format|
        @user_tasks = UserTask.where(:user_id => current_user.id).page(params[:page])
        format.html
      end
    end
end
Run Code Online (Sandbox Code Playgroud)

做了伎俩.


dav*_*lom 4

这不再需要了。

ActiveAdmin 0.4.4 现在支持范围查询,而无需覆盖此方法。请参阅此处:http ://activeadmin.info/docs/2-resource-customization.html#scoping_the_queries

如果您的管理员具有不同的访问级别,您有时可能希望限制他们有权访问的范围。假设您的 User 模型具有正确的 has_many 关系,您可以简单地确定列表和查找器的范围,如下所示:

 ActiveAdmin.register Post do
     scope_to :current_user

     # or if the association doesn't have the default name.
     # scope_to :current_user, :association_method => :blog_posts
 end
Run Code Online (Sandbox Code Playgroud)