我正在构建一个"Brand personality" tool,根据您在社交媒体上分享的文字为您提供报告。
我有一个模型PersonalityReport
,在路线中我有resources :personality_reports
。
一个新功能是在两个报告之间提供一个“差异”,我正在尝试找出最准确的“猜测”方式来在路线中对此进行建模。
理想情况下,我希望GET /personality_reports/:personality_report_id/diff/:id
或类似的东西,虽然我可以简单地将其作为GET路由放入路由中,是否有更多Railsy方法使用resources
指定路由/ collections
样式,以便我的routes.rb
文件更容易理解?
答案 0 :(得分:1)
“最好的”方式可以想到:
resources :personality_reports, param: 'personality_report' do
member do
get 'diff/:id', to: 'personality_reports#action', as: 'diff_route'
end
end
显然是:你的控制器是#action,as:是你路线的名字。运行rake路线后,您会看到这会生成:
diff_route_personality_report GET /personality_reports/:personality_report_id/diff/:id(.:format) personality_reports#action
答案 1 :(得分:1)
我认为无论你提到的是什么都足够好,
resources : personality_reports do
resources :diffs, only: [:show]
end
所以,下面的路线,
personality_report_diff GET /personality_reports/:personality_report_id/diffs/:id(.:format) diffs#show
注意:如果你想把它作为单一资源,你也可以用奇异的 resource:diff 制作差异路径。