2011-09-17 12 views

回答

10

当在rails应用中的gem AND中定义了一个视图时,会在Rails应用中定义一个视图。这是一个逻辑优先。

因此,如果您需要覆盖全部或部分活动的管理视图,则必须将这些视图复制到您的应用中并根据需要进行更改。

+1

我可以在哪里找到它们?我正在寻找AGES的git,却找不到它! – Mexxer

+0

相同@Mexxer;我一直花费一些时间来适当地覆盖这个。 – jackyalcine

+0

请看这里:https://github.com/gregbell/active_admin/tree/master/app/views – apneadiving

26

活动管理布局并未实际定义为布局文件,而是以编程方式生成。因此,在布局目录中放置自定义布局并不会实际覆盖默认布局。

但是,您可以在您的应用程序中使用猴子补丁或鸭子冲击活动的管理布局方法。

下面将添加一个即特定样式表头:

module ActiveAdmin 
    module Views 
    module Pages 
     class Base < Arbre::HTML::Document 

     alias_method :original_build_active_admin_head, :build_active_admin_head unless method_defined?(:original_build_active_admin_head) 

     def build_active_admin_head 
      within @head do 
      meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8" 
      insert_tag Arbre::HTML::Title, [title, active_admin_application.site_title].join(" | ") 
      active_admin_application.stylesheets.each do |path| 
       link :href => stylesheet_path(path), :media => "screen", :rel => "stylesheet", :type => "text/css" 
      end 
      active_admin_application.javascripts.each do |path| 
       script :src => javascript_path(path), :type => "text/javascript" 
      end 
      text_node csrf_meta_tag 
      text_node "<!--[if lt IE 7]> 
      <link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"admin_ie7.css\ /> 
      <![endif] -->".html_safe 
      end 
     end 

     end 
    end 
    end 
end 

显然难看溶液。

+2

你会把这个放在哪里? – jackyalcine

+0

@jalcine我将它添加到一个初始化 –

+0

所以会增加: '模块ActiveAdmin 模块查看 模块页面 布局:应用 结束 结束 结束 ' 而且我会好? – jackyalcine

1

也许ActiveAdmin确实提供了一种更好的方式来实现这一点?我不知道。 但是,这里将是一个更清洁的补丁的例子,在我的例子中,将webpacker gem javascript_pack_tag添加到我的管理区域。

module MyApp 
    module ActiveAdmin 
    module Views 
     module Pages 
     module BaseExtension 
      def build_active_admin_head 
      super 
      within @head do 
       text_node(javascript_pack_tag('application')) 
      end 
      end 
     end 
     end 
    end 
    end 
end 

class ActiveAdmin::Views::Pages::Base < Arbre::HTML::Document 
    prepend MyApp::ActiveAdmin::Views::Pages::BaseExtension 
end 
+0

这是IMO的最佳答案。但是,我们可以使用较为详细的方式来预先添加模块:https://gist.github.com/francois-ferrandis/1dc749262e7376e62074f908ee70356b –