2010-11-11 5 views
0

J'ai une route nommée vers la boîte de réception de l'utilisateur, qui est maintenue par la ressource de messages. Je veux m'assurer que les utilisateurs ne peuvent accéder à leur boîte de réception qu'à partir de mon chemin nommé, et supprimer "/ messages" en option.Comment puis-je remplacer un chemin nommé par un chemin de ressources dans Rails 3?

resources :messages 
    match "/u/:nickname/inbox" => "messages#index", :as=>:inbox 

Existe-t-il un moyen simple de le faire? Dois-je simplement créer un chemin correspondant pour "/ messages"?

+0

Ma nouvelle réponse a-t-elle fonctionné? – rwilliams

+0

oui, merci. – picardo

Répondre

2

Solution 1:

je créer un chemin pour les messages et supprimer resources :messages

Cette approche supprimera toutes les routes normales pour les messages et vous devrez ajouter à nouveau ceux que vous vouloir disponible.

Solution 2:

supprimer uniquement l'option d'index pour les routes et permettent d'être les mêmes toutes les autres voies de normalisation.

resources :messages, :except => :index 
match "/u/:nickname/inbox" => "messages#index", :as=>:inbox 
+0

Lorsque je supprime une ligne de ressources, je reçois l'erreur "Aucune route correspond {: action =>" créer ",: controller =>" messages "}" sur le nouveau modèle. – picardo

+0

Parce que nous avons supprimé la carte des ressources, vous devrez ajouter manuellement les routes que vous voulez pour les messages. – rwilliams

+0

J'ai édité ma réponse avec une solution alternative. – rwilliams

Questions connexes