我会考虑重新设计哪些 RESTful 路由Comment
正在嵌套,哪些不是。我假设您的模型看起来像这样:
# app/models/image.rb
class Image < ActiveRecord::Base
has_many :comments
end
# app/models/comment.rb
class Comment < ActiveRecord::Base
belongs_to :image
end
因为您Image
和Comment
模型具有一对多的关系,所以我可以理解为什么您会考虑将评论资源路由嵌套在图像之一中。但是,在 中的所有 CRUD 操作中comments_controller.rb
,实际上只create
需要显式传入父图像 ID。从 RESTful 角度来看,只有new
andcreate
操作需要将 aimage_id
传递给操作。、edit
、update
和动作delete
都like
可以独立于父图像发生。
请考虑替代路由示意图:
# config/routes.rb
resources :images do
resources :comments, :only => [:index, :new, :create]
end
resources :comments, :only => [:show, :edit, :update, :destroy] do
member do
post 'like'
end
end
现在,只有显式依赖于父 ID的评论操作实际上嵌套在图像路由中。其余的评论动作直接路由到评论控制器,无需传入父 ID。您的路线不再重复,并且每个操作都将声明一条路线。