3

Comment ajouter vos propres liens personnalisés dynamiquement à l'en-tête de navigation global ActiveAdmin autre que l'enregistrement des pages/modèles? Par exemple, si je veux un lien qui peut diriger les utilisateurs vers ma page d'accueil par exemple.Liens Active Admin Navigation

Répondre

1

J'ai réussi à cela en ajoutant l'ActiveAdmin :: MenuItem au contrôleur AdminAdmin actuel. Par exemple,

ActiveAdmin.register User, :name_space => :example_namespace do 
    controller do 
    private 
    def current_menu 
     item = ActiveAdmin::MenuItem.new :label => "Link Name", :url => 'http://google.com' 
     ActiveAdmin.application.namespaces[:example_namespace].menu.add(item) 
     ActiveAdmin.application.namespaces[:example_namespace].menu 
    end 
    end 
end 

Je essentiellement créé une nouvelle ActiveAdmin :: MenuItem et l'ajouter au menu courant ActiveAdmin avec l'espace de noms example_namespace et retourner le menu à la fin de la méthode de current_menu. Note: current_menu est une méthode attendue par ActiveAdmin donc ne changez pas le nom de celui-ci. Vous pouvez ajouter autant d'éléments que vous aimez et chacun de ces éléments sera converti en un lien sur votre en-tête de navigation. Notez que cela fonctionne pour la version ActiveAdmin> 0.4.3, donc vous devrez peut-être faire votre propre recherche si vous voulez le faire pour la version < = 0.4.3.

+0

beau travail! Je suis content que vous avez posté cette question et répondre! – Ivan

+0

Je suis heureux que ça aide :) – RubyFanatic

0

Vous pouvez configurer le titre du site dans votre initialisateur d'administration actif. Par exemple:

config.site_title_link = "/" 

Cela vous donnera un lien vers votre page de démarrage.

2

On dirait que ActiveAdmin l'a rendu un peu plus facile. J'ai mis à niveau vers la version 0.6.2 et voici ce que vous pouvez faire pour ajouter des liens personnalisés n'importe où dans votre navigation (l'exemple ci-dessous ajoutera un élément de menu personnalisé et une liste déroulante personnalisée):

In # config/initializers/active_admin .rb

ActiveAdmin.setup do |config| 
    config.namespace :admin do |admin| 
    admin.build_menu do |menu| 
     menu.add :label => "My Custom Link", :url => "/", :priority => 0 

     menu.add :label => "Pages" do |pages| 
     pages.add :label => "Homepage", :url => "/admin/homepage" 
     pages.add :label => "About Us", :url => "/admin/about-us" 
     pages.add :label => "Facebook", :url => "http://www.facebook.com", :html_options => { :target => "_blank" } 
     end 
    end 
    end 
end 

Si vous modèles déjà enregistrés « Pages » en tant que menu parent (par exemple: dans votre app/admin/dossier, un modèle avec menu :priority => 2, parent: 'Pages') il gardera ceux aussi bien automatiquement!

1
ActiveAdmin.register AdminPage do 
    menu :url => proc{ "#{AppConfig.url}/checkins/#{current_admin_user.try(:id)}" } 
end 

Ici, vous pouvez utiliser l'une de vos valeurs de champ db dans le paramètre URL pour construire votre propre URL.

+1

pas besoin de faire AppConfig avec '' '' url: -> {"# {request.base_url} /"} '' '' –

+0

Merci Man :) @jakub –

Questions connexes