2010-02-26 4 views
1

Mes itinéraires ne sont plus à la main en raison du fait que ce n'est pas possible (corrigez-moi si je me trompe):Routes - définir plusieurs ressources avec tidily personnalisation

map.resources :english_pages, :as => :english, :spanish_pages, :as => :spanish do |article| 

En raison de routes imbriquées les choses sont en spirale hors de contrôle (ordre).

map.resources :english_pages, :as => :english, :member => {:manage => :get} do |article| 
    article.resources :topics do |topic| 
    topic.resources :posts 
    end 
end 
map.resources :spanish_pages, :as => :spanish do |article| 
    article.resources :topics do |topic| 
    topic.resources :posts 
    end 
end 

Comment puis-je éviter la duplication de ceci:

article.resources :topics do |topic| 
    topic.resources :posts 
end 

est-il un moyen de stocker les routes comme un bloc quelque part, ou définir peut-être, dans mon cas, english_pages et alias pages espagnol séparement?

Merci beaucoup d'avance.

Répondre

1

Tout ce dont vous avez besoin est d'un peu de méta-programmation.

ressources est juste un appel de méthode, et les symboles finissent par être évalués sous forme de chaînes de toute façon, donc cela devient assez facile.

[:english, :spanish].each do |language| 
    map.resource "#{language}_pages", :as => language, :member => {:manage => :get} do |article| 
    article.resources :topics do |topic| 
    topic.resources :posts 
    end 
end 
+0

Merci beaucoup, aurait dû savoir que ce serait quelque chose de simple. – mark