2010-03-03 4 views
0

Я пытаюсь создать именованный маршрут 'has_many' именованные маршруты здесь. Но то, как я это делаю, не работает.Именованный маршрут с вложенными ресурсами

вот моя проблема: У меня есть несколько игровых платформ, к которым я хочу получить доступ:/имя_файла /. Это работает:

map.platform ':platform_name', 
       :controller => :platforms, 
       :action => :index, 
       :platform_name => /pc|ps2|ps3|wii|ds|psp|xbox360/ 

Но у меня также есть игры внутри каждой платформы, что я хочу обратиться по имени, поэтому я попытался:

map.platform ':platform_name', 
        :controller => :platforms, 
        :action => :index, 
        :platform_name => /pc|ps2|ps3|wii|ds|psp|xbox360/ do |platform| 

    platform.games ':game_name', 
        :controller => :games 
end 

Но когда я делаю это, даже платформу остановка маршрута. Возможно ли иметь именованный маршрут внутри другого именованного маршрута? Я могу только представить себе грязный код для достижения этого без отношения has_many. Любая идея приветствуется :)

ответ

1

Я не уверен, что это то, что вы хотите, но как насчет вложенности через 2 названных маршрута?

map.platform ':platform_name', :controller => :platforms, :action => :index 

map.games ':platform_name/:game_name', :controller => :games, :action => :show 
+0

Да, это работает, но игры будут иметь больше именованных маршрутов внутри, например, комментарии, отзывы ... не может быть более чистого пути? – Tiago

+1

Затем я предлагаю использовать маршрутизацию RESTful-resource, посмотрите http://guides.rubyonrails.org/routing.html. Кстати, Джамис Бак говорит: «Ресурсы никогда не должны быть вложены более чем на 1 уровень». - это хорошая конвенция! – xijo

Смежные вопросы