2010-11-19 4 views
3

J'ai un contrôleur de projet/modèle. Au lieu de répertorier les projets sur la page #index, je montre une liste de listes déroulantes, qui soumet aux projets # select, qui trouve le bon projet (je me suis assuré qu'il ne peut y en avoir qu'un pour chaque combinaison d'options) et transmet le utilisateur à la page #show pour ce projet.Renommage des aides de chemin dans le routage Rails 3

Donc, pour mes itinéraires que je fais ça ...

resources :projects, :only => [:index, :show] do 
    collection do 
    get 'select' 
    end 
end 

Et c'est bien, mais la méthode d'assistance pour #SELECT est « select_projects », ce qui est compréhensible, mais dans mon cas, je veux vraiment « select_project » . Et je ne veux vraiment pas alias cela dans un autre fichier. Pas de problème, je peux utiliser: comme ...

resources :projects, :only => [:index, :show] do 
    collection do 
    get 'select', :as => 'select_project' 
    end 
end 

Mais maintenant mon aide est « select_project_projects ». Donc, je triche un peu (encore mieux que l'aliasing dans un autre fichier) ...

resources :projects, :only => [:index, :show] 
match '/projects/select', :to => 'projects#select', :as => 'select_project' 

Cela ressemble à cela pourrait fonctionner, mais il ne veut pas parce que/projet/select correspond en fait la route pour « projet # show '. Changer l'ordre des lignes fait l'affaire.

match '/projects/select', :to => 'projects#select', :as => 'select_project' 
resources :projects, :only => [:index, :show] 

Mais y a-t-il une façon plus élégante de gérer cela? Je réalise que c'est un TOC limite, mais j'aimerais pouvoir avoir un contrôle complet sur le nom de l'itinéraire dans le bloc de ressources.

Répondre

1

vous ne voulez probablement pas pour en faire un itinéraire de collecte, mais une route membre:

resources :projects, :only => [:index, :show] do 
    member do 
    get 'select' 
    end 
end 

De cette façon, vous aurez l'aide de select_project.

+0

Est-ce pas un itinéraire membre nécessite un ID dans l'URL ? Il doit router vers/projects/select not/projects/1/select – LeroyJ

2

l'utilisation des ressources au lieu des ressources

0

Pour ceux qui veulent renommer le côté méthode d'assistance des choses (comme le suggère le titre):

resources :posts, as: "articles"