Пользовательское действие 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
Вы можете вставить логику фильтра в модель или другой объект, если хотите.