2010-02-26 40 views
1

我的路線失控是由於這樣的事實,這是不可能的(糾正我,如果我錯了)整齊地定義多個資源:路線 - 與定製

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

由於嵌套東西航線正在失去控制(整潔)。

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 

我怎樣才能避免這種重複:

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

是否有某種方式來存儲路徑作爲一個塊的地方,或者定義,在我的情況,english_pages和西班牙語頁面別名seperately?

非常感謝。

回答

1

所有你需要的是一點元編程。

資源只是一個方法調用,而這些符號最終被評估爲字符串,所以這變得非常容易。

[: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

非常感謝,應該知道這將是簡單的事情。 – mark 2010-02-26 16:04:56