在 FriendlyID slug 中隐藏资源名称

Posted

技术标签:

【中文标题】在 FriendlyID slug 中隐藏资源名称【英文标题】:Hiding a resource name in FriendlyID slug 【发布时间】:2012-06-20 10:30:54 【问题描述】:

我正在使用 FriendlyID 为我的一些模型生成 slug。

要使用 FriendlyID 文档 (http://rubydoc.info/github/norman/friendly_id/master/frames) 中提供的示例,我的网址目前如下所示:

http://localhost:3000/cities/seattle/restaurants/joes-diner

鉴于在我的情况下,一个城市除了餐馆什么都没有,我正在寻找一种方法来删除 URL 中的“restaurants”位,使其看起来像这样:

http://localhost:3000/cities/seattle/joes-diner

或者如果可能的话

http://localhost:3000/seattle/joes-diner

实现这一目标的最佳方法是什么 - 如果这样做是可取的?我可以想象最后一个选项可能会带来一些复杂性。

【问题讨论】:

你看过命名路线了吗? Official doc is here 【参考方案1】:

您可以在http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing#controller-namespaces-and-routing找到解决您的问题的方法

您可以使用:path => "" 执行此任务。

问候!

【讨论】:

【参考方案2】:

带有规格和正确编辑\更新等的解决方案在这里:

http://jasoncodes.com/posts/rails-3-nested-resource-slugs#solution

【讨论】:

以上是关于在 FriendlyID slug 中隐藏资源名称的主要内容,如果未能解决你的问题,请参考以下文章

使用 Rails 5,如何让 FriendlyId 附加 -"count+1" 来复制 slug 而不是 UUID?

将 FriendlyID slugs 翻译成对应的 ID

在模块中使用 FriendlyId

FriendlyID 历史记录不适用于 Rails 中更新的模型 url

在永久链接中使用类别名称而不是类别 slug

Rails 中 URL 中的 ID + Slug 名称(如 *** 中)