如何使用 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
。
我想知道如何生成包含两个不同模型的友好 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
。