2010-10-23 9 views
1

Ce que je suis en train de faire:Liste des routes de contrôleur dans les rails 3?

Je crée des contrôleurs, par exemple:

  • Accueil
  • A propos
  • Galerie
  • Contactez

Maintenant, je veux pour créer une navigation automatiquement. Donc, y a-t-il un moyen de récupérer par programme la liste des contrôleurs/actions pour construire cette navigation?

Je ne veux pas corriger la navigation chaque fois que j'ajoute un contrôleur.

+0

Avez-vous compris cela? J'ai besoin de retourner un tableau de tous les noms de contrôleurs aussi – stephenmurdoch

Répondre

1

Vous pouvez essayer quelque chose comme ceci:

HomeController.action_methods.each do |action| 
    url_for(:action => action) 
end 
+0

Où mettez-vous cela? dans les routes.rb? –

0

Voici une seule ligne qui vous donne tous les contrôleurs en fonction de votre fichier itinéraires. J'ai trouvé que j'avais une valeur nulle, alors j'ai ajouté le sauvetage, puis rejeté l'un de ces vides vides. L'uniq supprime tous les doublons.

Rails.application.routes.routes.collect { |r| r.defaults[:controller] rescue '' }.reject! { |c| c.empty? }.uniq 

Ajout d'un titlecase pour les rendre plus adaptés à votre navigation.

Rails.application.routes.routes.collect { |r| r.defaults[:controller].titlecase rescue '' }.reject! { |c| c.empty? }.uniq 

Ceci est réservé à ceux qui se trouvent dans un espace de noms d'administrateur.

Rails.application.routes.routes.collect { |r| r.defaults[:controller].titlecase rescue '' }.reject { |c| c.empty? }.uniq.reject { |n| !n.include?('Admin/') }.map { |i| i.gsub('Admin/', '') }.sort