Маршруты - аккуратно определяют несколько ресурсов с настройкой - PullRequest
1 голос
/ 26 февраля 2010

Мои маршруты выходят из-под контроля из-за того, что это невозможно (поправьте меня, если я ошибаюсь):

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 и испанские страницы отдельно?

Большое спасибо заранее.

1 Ответ

1 голос
/ 26 февраля 2010

Все, что вам нужно, это немного метапрограммирования.

ресурсы - это просто вызов метода, и символы в любом случае в конечном итоге оцениваются как строки, так что это становится довольно просто.

[: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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...