Ruby on rails rails-创建类似路线的最佳实践?
在我的应用程序中,一个用户可以发表帖子,一个用户可以对另一个用户的帖子进行更正(将其视为评论)。每个用户可以有许多帖子,每个帖子可以有许多更正 在每一篇文章的展示页面上,都有一个创建新更正的表单。这使用Ruby on rails rails-创建类似路线的最佳实践?,ruby-on-rails,Ruby On Rails,在我的应用程序中,一个用户可以发表帖子,一个用户可以对另一个用户的帖子进行更正(将其视为评论)。每个用户可以有许多帖子,每个帖子可以有许多更正 在每一篇文章的展示页面上,都有一个创建新更正的表单。这使用user\u post\u corrections路径 在每个用户的显示页面上,我想显示他们为任何帖子提交的每个更正。这需要一个用户路径 为了实现这一点,我的routes.rb中包含以下内容: resources :users do resources :posts do re
user\u post\u corrections
路径
在每个用户的显示页面上,我想显示他们为任何帖子提交的每个更正。这需要一个用户路径
为了实现这一点,我的routes.rb中包含以下内容:
resources :users do
resources :posts do
resources :corrections
end
end
resources :users do
resources :corrections
end
这让我感觉很糟糕,因为我创建了两个彼此非常相似的嵌套路由
有更好的方法吗?我的代码运行良好,但是否有实现此类模型的最佳实践方法?是一个优秀但未充分使用的工具,用于干燥路线:
concern :correctable do
resources :corrections
end
# just an example of multiple concerns
concern :commentable do
resources :comments
end
resources :users, concerns: :correctable
resources :posts, concerns: [:correctable, :commentable]
但是,在创建嵌套管线时应采取以下措施,以避免不必要的嵌套
通常,您可能希望集合操作[新建、索引、创建]
的范围由父级确定:
GET|POST /posts/:post_id/corrections
GET /posts/:post_id/corrections/new
虽然希望成员操作不受范围限制,但如果记录具有唯一id,则始终可以直接访问该记录
GET /corrections/:id
GET /corrections/:id/edit
PATCH /corrections/:id
DELETE /corrections/:id
要执行此操作,请按如下方式声明路由:
resources :corrections, only: [:show, :update, :edit]
concern :correctable do
resources :corrections, only: [:new, :index, :create]
end
resources :users, :posts, concerns: [:correctable]
shallow:true
选项执行类似的操作,但在多次声明相同的资源时效果不佳,因为它会为每个调用添加非范围路由