2010-12-09 5 views
0

J'ai deux modèles avec une relation has-many/belongs-to. Les routes sont imbriquées, et j'ai dans mon routes.rb:Personnalisation des itinéraires Rails pour supprimer les noms de modèles

resources :threads do 
    resources :posts 
end 

J'obtenir des URL comme example.org/threads/147/posts/372, et example.org/threads/298, etc.

Comment puis-je changer cela afin que les URL ressemblent plus à example.org/147/372, avec les modèles implicites?

Répondre

1

Vous pouvez configurer une route comme ceci:

match ':id' => 'threads#show' 
match ':thread_id/:id' => 'posts#show' 

Cela fonctionnerait, mais il serait aussi causer des problèmes pour d'autres voies, car il serait non seulement example.org/123/456 match, il serait également correspondre example.org/user/mark~~V~~3rd

pour vous assurer qu'il correspond seulement est possible d'id (numériques) pour les modèles, vous pouvez ajouter des contraintes comme ceci:

match ':id' => 'threads#show', :constraints => { :id => /\d*/ } 
Questions connexes