ActiveAdmin: как переопределить действие контроллера индекса: неопределенный метод "base" для nil: NilClass - PullRequest
7 голосов
/ 29 января 2012

Я пытаюсь переопределить действие index контроллера ActiveAdmin, чтобы оно отображало результаты для current_user вместо всех результатов.

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

При доступе к ActiveAdmin выдается исключение:

ActionView::Template::Error (undefined method `base' for nil:NilClass):
    1: render renderer_for(:index)

Я использую рельсы 3.1 и последнюю версию ActiveAdmin. gem "activeadmin", :git => 'https://github.com/gregbell/active_admin.git'.

Ответы [ 3 ]

9 голосов
/ 29 января 2012

Не знаю почему, но

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

сделали свое дело.

4 голосов
/ 19 августа 2012

Это больше не требуется.

ActiveAdmin 0.4.4 теперь поддерживает предварительные запросы без переопределения этого метода.см. здесь: http://activeadmin.info/docs/2-resource-customization.html#scoping_the_queries

Если у ваших администраторов разные уровни доступа, вы можете захотеть определить, к чему у них есть доступ.Предполагая, что ваша пользовательская модель имеет правильные отношения 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
3 голосов
/ 17 сентября 2014

Позвольте переопределить действие следующим образом:

controller do
  def scoped_collection
    # some stuffs
    super.where("type = ?", "good")
  end 

  # other stuffs
end

Таким образом, вы также можете нормально запускать функции экспорта (в xml, csv, ...) с новой переопределенной коллекцией.

В моем тесте это работает только там, где условие и область, а не предел.

См. Это: https://github.com/activeadmin/activeadmin/issues/642

...