Пользовательское действие Rails_admin указывает имя шаблона

Мое приложение - Rails 4.1 с rails_admin 0.8.1. Я хочу создать настраиваемое действие, которое показывает только статьи, принадлежащие зарегистрированному пользователю. Если бы я использовал обычные Rails-скаффолды, я просто создал бы новое действие в контроллере статей и сказал бы ему использовать индексное представление.

Я правильно зарегистрировал действие в rails_admin.rb, чтобы оно появилось. Но как мне указать template_name в RA? Я продолжаю получать Missing template rails_admin/main/myarticles ... когда я просматриваю http://localhost:3000/admin/article/myarticles

class Article
  include Mongoid::Document
  field :title, type: String
  belongs_to :user
  ...
  def my_articles current_user
    Article.where(user: current_user)
  end
end

class Myarticles < RailsAdmin::Config::Actions::Base
  RailsAdmin::Config::Actions.register(self)
  register_instance_option :collection do
    true
  end
  register_instance_option :visible? do
    authorized?
  end
  register_instance_option :only do
    Article
  end
  register_instance_option :template_name do
    :index  # this does not work
  end
  register_instance_option :controller do
    proc do
      @objects = Article.my_articles(current_user)
    end
  end
end

1 ответ

Решение

Наконец-то разобрался.

  class Myarticles < Collectionaction
    RailsAdmin::Config::Actions.register(self)
    ...
    register_instance_option :controller do
      proc do
        @objects = Article.where(user: current_user)
        render :index
      end
    end
  end

Вы можете вставить логику фильтра в модель или другой объект, если хотите.

Другие вопросы по тегам