【问题标题】:Named route with nested resources具有嵌套资源的命名路由
【发布时间】:2010-03-03 11:51:28
【问题描述】:

我正在尝试在这里创建一个命名路由“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 关系的情况下实现这一目标。欢迎任何想法:)

【问题讨论】:

    标签: ruby-on-rails routes


    【解决方案1】:

    我不确定这是否是您想要的,但是通过 2 个命名路由嵌套呢?

    map.platform ':platform_name', :controller => :platforms, :action => :index
    
    map.games ':platform_name/:game_name', :controller => :games, :action => :show
    

    【讨论】:

    • 是的,这行得通,但游戏内部会有更多命名路线,如 cmets、评论……难道没有更简洁的方法吗?
    • 那我建议使用RESTful-resource路由,看看guides.rubyonrails.org/routing.html。顺便说一句,Jamis Buck 说:“资源的嵌套深度不应超过 1 级。” - 这是一个很好的约定!
    猜你喜欢
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2015-11-23
    相关资源
    最近更新 更多