在同一模型的两个实例之间路由 "diff" 的 "Rails way" 是什么?
What's the "Rails way" to route a "diff" between two instances of the same model?
我正在构建一个 "Brand personality" tool,它会根据您在社交媒体上分享的文本为您提供一份报告。
我有一个模型 PersonalityReport
并且在路线中我有 resources :personality_reports
.
一项新功能是在两个报告之间提供 "diff",我正在尝试找出最 "guessable" 的方式在路线中对此进行建模。
理想情况下,我想要 GET /personality_reports/:personality_report_id/diff/:id
或类似的东西,虽然我可以简单地将其作为 GET 路由放入路由中,但是否有更多 Railsy 方法使用 [=15 指定路由=] / collections
样式让我的 routes.rb
文件更容易理解?
能想到的'neatest'方式是:
resources :personality_reports, param: 'personality_report' do
member do
get 'diff/:id', to: 'personality_reports#action', as: 'diff_route'
end
end
显然 to: 是你的控制器#action,而 as: 是你的路线名称。在 运行 rake routes 之后你会看到生成:
diff_route_personality_report GET /personality_reports/:personality_report_id/diff/:id(.:format) personality_reports#action
我觉得你说的都不错,
resources : personality_reports do
resources :diffs, only: [:show]
end
所以,像下面这样的路线,
personality_report_diff GET /personality_reports/:personality_report_id/diffs/:id(.:format) diffs#show
注意:如果你想将它作为单一资源,你也可以在单数资源中制作差异路由:diff。
我正在构建一个 "Brand personality" tool,它会根据您在社交媒体上分享的文本为您提供一份报告。
我有一个模型 PersonalityReport
并且在路线中我有 resources :personality_reports
.
一项新功能是在两个报告之间提供 "diff",我正在尝试找出最 "guessable" 的方式在路线中对此进行建模。
理想情况下,我想要 GET /personality_reports/:personality_report_id/diff/:id
或类似的东西,虽然我可以简单地将其作为 GET 路由放入路由中,但是否有更多 Railsy 方法使用 [=15 指定路由=] / collections
样式让我的 routes.rb
文件更容易理解?
能想到的'neatest'方式是:
resources :personality_reports, param: 'personality_report' do
member do
get 'diff/:id', to: 'personality_reports#action', as: 'diff_route'
end
end
显然 to: 是你的控制器#action,而 as: 是你的路线名称。在 运行 rake routes 之后你会看到生成:
diff_route_personality_report GET /personality_reports/:personality_report_id/diff/:id(.:format) personality_reports#action
我觉得你说的都不错,
resources : personality_reports do
resources :diffs, only: [:show]
end
所以,像下面这样的路线,
personality_report_diff GET /personality_reports/:personality_report_id/diffs/:id(.:format) diffs#show
注意:如果你想将它作为单一资源,你也可以在单数资源中制作差异路由:diff。