如何使用 FriendlyID 区分 routes/URL 中属于不同模型的 :ids?

How to differentiate between :ids in routes/URL that belong to different models using FriendlyID?

我想知道如何生成包含两个不同模型的友好 ID 的 url。例如,如果你有一个名为 'Rails Tutorial' 的 post 并且属于一个名为 'Michael' 的特定用户,并且他们每个人都使用 slug 代替他们的 ID,你将如何生成 url 看起来像 site.com/michael/rails-tutorial。

如果您将路线设置为:

get ':id/:id' => 'posts#show', as: 'show_post'

URL 要么是 michael/michael 要么是 rails-tutorial/rails-tutorial,但是 Friendly_id 的工作方式据我所知是你的 slug 由 :id 表示,所以您无法将其配置为使用 get ':user_id/:post_id'.

我确定我对 FriendlyID 的了解不够。感谢任何帮助。

为了获得您正在寻找的 url,您需要嵌套您的路线:

resources :users do
  resources :posts
end

这将为您提供路线:

localhost:3000/users/slug/post/slug

您还必须 extend FriendlyId 在每个模型中,将 slug 添加到迁移中的每个模型,并在控制器操作中使用 .friendly