代码之家  ›  专栏  ›  技术社区  ›  knagode

重新使用activeadmin组件

  •  0
  • knagode  · 技术社区  · 7 年前

    我有很多模型,其中很多需要相同的设置(操作按钮、成员操作、面板等)。我如何在许多地方重用代码,并保持代码的干燥,而不是在周围复制/粘贴相同的代码块。

    例如,我需要在每个资源上使用此代码:

    member_action :purge_cache, method: :post do
        CacheManager.new(resource).purge_all
    end
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   MrAleister    7 年前

    在activeadmin::resource中创建模块, check how they are doing it

        2
  •  0
  •   knagode    7 年前

    我找到了另一种方法:

    创造 /app/admin/concerns/shared_stuff.rb :

    module SharedStuff
      def self.extended(base)
        base.instance_eval do
          member_action :purge_cache, method: :post do
            CacheManager.new(resource).purge_all
          end
        end
      end
    end
    

    无论您在何处需要相同的操作,您都可以使用:

    ActiveAdmin.register Website do
      extend SharedStuff
    
      ...
    

    您可以用这种方式轻松添加面板、过滤器、批处理操作等…

    学分转到: http://tmichel.github.io/2015/02/22/sharing-code-between-activeadmin-resources/

    推荐文章