2011-08-26 14 views
7

Necesito agregar algunos enlaces a ciertas páginas de la aplicación en las páginas de ActiveAdmin. Puedo hacer esto usando barras laterales, pero tendré que repetir el código para cada uno de mis recursos. ¿Hay alguna forma de agregar enlaces personalizados al encabezado? ¿O definir una barra lateral que aparecerá para todos los recursos?¿Cómo agregar un enlace a la aplicación en ActiveAdmin?

Respuesta

14

Tampoco querría pasar por alto la configuración config.site_title_link en inicializadores/active_admin.rb.

Estoy bastante seguro de que se necesita un símbolo que representa el nombre de una ruta desde su aplicación, por ejemplo:

config.site_title_link = :root 

vincularía el título del sitio a root_path de su aplicación.

+0

Gracias! Estaba usando una versión anterior de ActiveAdmin que no admite un enlace de título configurable. Actualizada a la última versión y configurada ahora. –

+0

Y sí, también admite símbolos –

+0

Me alegra saber que está funcionando para usted; obviamente, si necesita más de un enlace en su encabezado, esto no lo logra. ¡Pero parece un muy buen comienzo! –

2

creo que no hay manera de construir-en hacerlo, pero se puede anular la lógica rendir en el TabsRenderer (2.2)/TabbedNavigation (3.0):

def render_menu(menu) 
    content_tag :ul, :id => @options[:id] do 
     menu.items.collect do |item| 
     render_item(item) 
     end.join.<<('your_custom_stuff').html_safe 
    end 
    end 
11

Gracias @phoet! Implementado reemplazando el lugar HeaderRenderer:

module ActiveAdmin 
    module Views 
     class HeaderRenderer 
     def to_html 
      title + global_navigation + application_link + utility_navigation 
     end 

     def application_link 
      link_to('Back to Application', root_url) 
     end 
     end 
    end 
    end 
+0

¿Esto tiene que ponerse en algún lugar en particular? ex: 'app/admin/views/header_renderer.rb'? – mbillard

+0

@mbillard: puede colocarlo en cualquiera de sus archivos en el mismo directorio donde define todas sus páginas. Este código sobrescribirá los métodos en las clases internas de ActiveAdmin. –

+0

Eso es correcto, o un lugar mejor para poner esto sería en un archivo separado (tal vez llamado active_admin_initializer.rb) bajo el directorio config/initializers. Rails cargará todos los archivos en el directorio "config/initializers" durante el inicio. –

Cuestiones relacionadas