Rails_admin 自定义操作指定模板名称
Rails_admin custom action specify template name
我的应用程序是 Rails 4.1 和 rails_admin 0.8.1。我想创建仅显示属于已登录用户的文章的自定义操作。如果我使用常规 Rails 脚手架,我会在文章控制器中创建一个新操作并告诉它使用索引视图。
我在 rails_admin.rb 中正确注册了操作,所以它显示了。但是如何在 RA 中指定 template_name 呢?当我浏览到 http://localhost:3000/admin/article/myarticles
时,我不断收到 Missing template rails_admin/main/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
终于想通了。
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
如果需要,您可以将过滤器逻辑推送到模型或其他对象中。
我的应用程序是 Rails 4.1 和 rails_admin 0.8.1。我想创建仅显示属于已登录用户的文章的自定义操作。如果我使用常规 Rails 脚手架,我会在文章控制器中创建一个新操作并告诉它使用索引视图。
我在 rails_admin.rb 中正确注册了操作,所以它显示了。但是如何在 RA 中指定 template_name 呢?当我浏览到 http://localhost:3000/admin/article/myarticles
时,我不断收到Missing template rails_admin/main/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
终于想通了。
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
如果需要,您可以将过滤器逻辑推送到模型或其他对象中。