设计Ruby on Rails 4路线

问题描述:

我想在开发我的Rails应用程序时达到这样的效果:/users/14/images/88。 在那里我有用户的网址段,然后是用户ID,属于这个用户的图像和图像ID。设计Ruby on Rails 4路线

我在问你,所以,设计我的路线的最佳方法是什么?我应该保持这种模式吗? 我读过这对Ruby on Rails的路由文件:

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

而这正是让我困惑。没有更深的1级。

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

提前致谢!

+0

这是没有地方分享专家**的意见**,对不起。尽管如此,为了澄清,这是关于一个**嵌套**级别:我。即'/ users/14/images/11'是可以接受的,'/ users/14/images/11/comments/5'不是。这只是代码风格的限制,请参阅[Rails社区风格指南](https://github.com/bbatsov/rails-style-guide#routing)。 –

+0

谢谢,实际上,我已经决定在指向用户图像时使用'/ users/11/images',如果我想要链接到图像,它将是'/ images/231',所以我已经将我的图像与用户的url-segment中的id分开。 –

#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 

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