2010-03-03 138 views
0

我想在这里创建一个命名路由'have_many'其他命名路由。但我这样做的方式不起作用。嵌套资源的命名路由

这是我的问题: 我有几个游戏平台,我想通过/:platform_name /访问。这是工作:

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 2010-03-03 12:35:53

+1

然后我建议使用RESTful-resource路由,看看http://guides.rubyonrails.org/routing.html。 btw贾米斯巴克说:“资源不应该嵌套超过1级深。” - 这是一个很好的习惯! – xijo 2010-03-03 12:45:30