【发布时间】:2019-10-01 07:11:23
【问题描述】:
说明。
我想过滤我网站上的产品,但我不会使用嵌套资源。
过滤有 4 级。
例如,
https://example.com/london/car/bmw/red
或
https://example.com/:city/:category/:brand/:color
routes.rb
get '/:one_id', to: 'categories#show', as: 'category_one'
get '/:one_id/:two_id', to: 'categories#show', as: 'category_two'
get '/:one_id/:two_id/:three_id', to: 'categories#show', as: 'category_three'
get '/:one_id/:two_id/:three_id/:four_id', to: 'categories#show', as: 'category_four'
为什么我使用名称 id 像 ":one_id"、":two_id" 等等?
因为“:one_id”可能包含多个对象(过滤器)。
例如,
即“:one_id”可以是城市、类别或性别(多个实体),“:two_id”可以是类别、品牌或颜色等。
问题:
组织此类路由的最佳做法是什么?
配置:
Ruby 2.5.1
导轨 5.2.2.1
【问题讨论】:
-
您要求最佳实践,但说您不想使用 rails 内置系统进行路由,这是他们推荐的方法
-
第 3 节包含非资源性路线上的所有内容 - 这是可行的,但相比之下看起来并不漂亮:guides.rubyonrails.org/routing.html#non-resourceful-routes
-
谢谢,@Mark。我明白那个。但我有一个来自现实生活的特定任务。这项任务已经使用“不良”做法实施,但我确信有一种更正确的实施方式。 Rails 是一个非常有弹性的平台。
-
他们确实在指南的开头说,资源丰富的路线并不适用于每个应用程序,所以你很可能是对的
标签: ruby-on-rails ruby routing ruby-on-rails-5 filtering