【问题标题】:How to use Rails routing without resources, with use only ids如何在没有资源的情况下使用 Rails 路由,仅使用 id
【发布时间】: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”可能包含多个对象(过滤器)。

例如,

https://example.com/london/

https://example.com/bmw/

https://example.com/woman/

即“: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


【解决方案1】:

您可以使用shallow 来避免在rails 中深度嵌套资源。您可以阅读this tutorial 了解更多信息。

【讨论】:

  • 也许吧。但是 :shallow 选项不允许完全放弃在 url (/parent/:id) 中使用父名称。如何组织我的网址,如 "/:id/:id/:id/:id" ?
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 2020-12-14
  • 2021-09-18
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
相关资源
最近更新 更多