2015-07-21 65 views
0

我已经在我的主应用中安装了Active Admin gem,并在我刚刚创建的“引擎”目录中设置了一个可挂载引擎。在Rails引擎中扩展活动管理视图

我想在我的引擎中调整我的主应用程序的ActiveAdmin视图,这样我就可以添加特定的链接和内容。

我的引擎有它自己的命名空间(为简单起见,我们称之为MyOwnEngine)。

我已经创建了我的引擎的“LIB/admin”的目录下的“activeadmin_components.rb”文件,我已经加入这个:

module MyOwnEngine 
    module ActiveAdmin 
     module Views 
      class Header < ::ActiveAdmin::Component 

      def build(namespace, menu) 
       super(:id => "header") 
       # stuff is done here...nothing that matters, really... 
       build_site_title 
      end 

      def build_site_title 
       render "admin/parts/myenginespecificpart" 
      end 
     end 
    end 
end 

这住了MyOwnEngine命名空间内,但永远不会显示,这些自定义唐如果我删除名称空间(模块MyOwnEngine部分),那么写在我的引擎中的定制将覆盖我的主应用程序的定制。

如果我打http://whatever/app,我想显示我的应用程序的活动管理的意见,如果我打http://whatever/engine,我想有我的应用程序的主动管理的意见+我已经在我的引擎进行自定义,但我不能。

我知道它必须是一个命名空间相关的问题,它必须是微不足道的,但我无法弄清楚它现在是什么。

任何帮助表示赞赏。谢谢。

+0

我在获得类似的行为 –

回答

0

你可以做的是这样的:

require "active_admin/views/header" 
module ActiveAdmin 
    module Views 
    class Header < ::ActiveAdmin::Component 

     def build(namespace, menu) 
     super(:id => "header") 

     if namespace.name == "namespace to hack" 
      # stuff is done here...nothing that matters, really... 
      build_my_site_title 
     else 
      @namespace = namespace 
      @menu = menu 
      @utility_menu = @namespace.fetch_menu(:utility_navigation) 

      build_site_title 
      build_global_navigation 
      build_utility_navigation 
     end 
     end 

     def build_my_site_title 
     render "admin/parts/myenginespecificpart" 
     end 
    end 
end 
+0

感谢蒂莫,看起来非常哈克对我很感兴趣,但我这样做,等待一个更好的解决方案天知道什么时候。 – LaFabriqueDeCode