ruby-on-rails - Rails - 自连接祖先,可能有嵌套路线和 slug?

标签 ruby-on-rails database routes ruby-on-rails-5 ancestry

目标是创建以下 URL 路由:

localhost:3000/category-1/location-1/

localhost:3000/category-1/location-1/sub-location-2

localhost:3000/category-1/location-1/sub-location-2/sub-location-3

我有一系列已被分成几类的地点。每个位置可以属于1个类别,也可以属于1个位置,或者是一个根位置。

Category.rb

has_many :locations

Location.rb

belongs_to :category
has_ancestry

我考虑过将我的 Location 模型拆分为 Location 和 SubLocation,但它不够灵活,无法支持所有可能的位置。这将是理想的结构,但我不确定它是否会支持这样的路由。

理想情况下,路由还支持通过 gem Friendly_Id 使用 slug,但目前这些仅适用于类别模型。

我该怎么做才能让我的路线像这样工作?

最佳答案

get ':category/:location', to: 'locations#action1'
get ':category/:location/:sublocation', to: 'locations#action2'
get ':category/:location/:sublocation/:subsublocation', to: 'locations#action3'

参见 Rails Routing from the Outside In了解更多信息

关于ruby-on-rails - Rails - 自连接祖先,可能有嵌套路线和 slug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236676/

相关文章:

php - 执行多个查询时,SQL 语法错误?

javascript - 使用 MapBox 绘制多个标记之间的路线

ruby-on-rails - unicorn 不在生产模式下运行

c# - 从固定装置内杀死 FitNesse

ruby-on-rails - 添加数据库字段迁移失败 'method not found'

ruby-on-rails - 处理没有结果的搜索

php - Silex 上的绑定(bind)方法

CodeIgniter - 如何路由具有其他名称的 Controller ?

ruby-on-rails - Rails 捕获所有路线,不包括资源和 HTML

mysql - 通过 MySQL 协议(protocol)连接到 Sphinx 时出错