我的路线失控,因为这是不可能的(如果我错了,请纠正我):
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和spanish pages别名?
非常感谢。
答案 0 :(得分: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