首页 文章

设计Ruby On Rails 4路由

提问于
浏览
2

我想在开发我的Rails应用程序时实现类似的东西: /users/14/images/88 . 我有用户URL-segment,然后是用户ID,属于该用户的图像和图像ID .

我问你,那么,设计路线的最佳方式是什么?我应该保留这种模式吗?我在Ruby On Rails路由文档上看到了这个:

[ ! ] Resources should never be nested more than 1 level deep.

这让我很困惑 . 不超过1级深 .

所以,基本上,这可能意味着一个级别可能是 /users/14 ,但我还需要一个级别( /images/88 ) . 根据设计路线的最佳实践,制作多于一层的嵌套资源是个坏主意 . 我对此感到困惑 .

提前致谢!

1 回答

  • 4
    #config/routes.rb
    resources :users do
       resources :images
    end
    

    这是一个深度 .


    #config/routes.rb
    resources :users do
       resources :images do
          resources :comments
       end
    end
    

    这不仅仅是一个层次 .


    正如您在quoted resource中所看到的,问题不是无法匹配资源,而是处理流程 . 例如...

    #app/controllers/comments_controller.rb
    class CommentsController < ApplicationController
       def show
          @user = User.find params[:user_id]
          @image = @user.images.find params[:image_id]
          @comments = @image.comments
       end
    end
    

    虽然没有完全超出范围,但它显示了深层链接资源的混乱程度 . 您最好提倡更简化的方法 - 例如,将 comments 附加到 images 并通过 images#show 控制器操作显示它们 .

相关问题