5 votes

Deux espaces de noms de activeadmin

J'essaie d'installer Activeadmin avec deux espaces de noms depuis 4 heures et je n'ai pas de chance.

Je veux deux espaces de noms. "admin" et "admin_unit".

Je suppose que j'aurais les répertoires app/admin et app/admin_unit.

Pour l'espace de nom admin, je voudrais utiliser l'authentification devise par défaut, et pour l'espace de nom "admin_unit", j'ai une méthode current_user que je dois utiliser.

J'ai essayé d'envelopper toute la configuration dans la configuration active_admin avec des espaces de noms, et j'ai essayé de créer manuellement les fichiers etc. mais à chaque fois j'ai un problème.

Activeadmin a tellement changé l'année dernière que je crains que la moitié des instructions que j'ai vues ne soient dépassées. Et aucune d'entre elles n'est complète. La documentation n'est que partiellement disponible sur l'espacement des noms.

Quelqu'un a-t-il des instructions étape par étape pour installer ces deux espaces de noms du début à la fin ? Je serais très reconnaissant d'avoir de l'aide à ce sujet !

EDITAR

Lorsque je lance le serveur (ou dans ce cas, j'essaie de lancer les routes de rake), j'obtiens cette erreur :

 Expected /app/active_admin/admin/dashboard.rb to define Admin::Dashboard (LoadError)

dashboard.rb contient ceci :

ActiveAdmin.register_page "My Page", :namespace => :admin do
  content do
    para "Hello World"
  end
end

J'ai également essayé sans espace de nom :

ActiveAdmin.register_page "My Page" do
  content do
    para "Hello World"
  end
end

Pour info, j'ai ajouté un répertoire "active_admin", et j'y ai placé les deux répertoires namespaced. J'ai ajouté les deux aux loadpaths (merci pour cela).

Cette erreur a-t-elle un rapport avec les nouvelles pages du tableau de bord ? Je vais maintenant examiner comment elles fonctionnent.

Merci les gars ! Merci pour votre travail Gregg, j'ai utilisé AA sur des dizaines d'applications maintenant et je l'adore !

CORRECTION

Ok, en ce qui concerne le dernier problème, j'ai constaté que le fait de retirer les deux répertoires "activeadmin" du répertoire "active_admin" que j'ai créé a réglé le problème. Je ne sais pas pourquoi cela ne fonctionne pas... mais bon, j'ai passé assez de cycles sur ce problème et je suis prêt à passer à autre chose.

J'espère que cela aidera quelqu'un d'autre.

8voto

OutlawAndy Points 316

Avez-vous ajouté app/admin_unit au chemin de chargement de active_admin ?

  config.load_paths = [File.expand_path('app/admin', Rails.root), File.expand_path('app/admin_unit', Rails.root)]

Cela peut aller dans 'config/initializers/active_admin.rb'. C'est nécessaire en raison de la façon dont active_admin prend soin de ne pas charger les ressources plus d'une fois.

En ce qui concerne la méthode d'authentification, quelque chose comme ceci devrait fonctionner :

config.namespace :admin_unit do |namespaced|
    namespaced.authentication_method = :current_user
end

Notez cependant que "authentication_method" et "current_user_method" sont deux paramètres différents de l'appareil (utilisés pour les paramètres de l'appareil). authentifier avant les actions du contrôleur, et à retourner l'utilisateur actuel respectivement). Je ne le signale que parce que je pense que 'current_user' est la méthode que Devise (non-activeadmin) appelle par défaut pour retourner l'utilisateur connecté.

7voto

Greg Bell Points 374

Les répertoires dans lesquels vous placez les fichiers sont différents de la configuration des espaces de noms. Si vous souhaitez ajouter un nouveau répertoire à partir duquel Active Admin charge les fichiers :

  config.load_paths = [File.expand_path('app/admin', Rails.root), File.expand_path('app/admin_unit', Rails.root)]

Maintenant vous pouvez placer des fichiers dans app/admin_unit et Active Admin les chargera. Cela n'a aucun effet sur le "namespace" dans lequel ces fichiers sont placés.

Pour définir l'espace de nom d'une ressource, il suffit de passer le nom de l'espace de nom dans l'enregistrement :

ActiveAdmin.register SomeResource, :namespace => :admin_unit do
  # configuration
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X