如何将 id 添加到 Friendly_id slug?
Posted
技术标签:
【中文标题】如何将 id 添加到 Friendly_id slug?【英文标题】:How to add id to Friendly_id slug? 【发布时间】:2021-04-25 06:32:27 【问题描述】:我对生成带有标题和 ID 的 slug 很感兴趣。否则,我会收到类似帖子收集路由覆盖单个帖子路由的错误。
class Post > ApplicationRecord
extend FriendlyId
friendly_id [:id, :title], use: :slugged
end
resources :posts do
get "videos", on: :collection
end
slug "videos" 会与 "videos" 收集路径冲突。
是否可以生成带有 id 和 title 的 slug?
"#id_#title" # Friendly Id slug
【问题讨论】:
【参考方案1】:Friendly Id 不能这样做,因为它在保存之前会生成 slug,所以它不会有 id https://github.com/norman/friendly_id/blob/master/lib/friendly_id/slugged.rb#L250
您可能需要使用to_param
方法来自定义:
class Post < ApplicationRecord
def to_param
"#id_#title".parameterize
end
end
但是你需要编写自定义方法来查找记录 id,就像在你的控制器中一样:
def show
id = params[:id].split('_')[0]
post = Post.find(id)
end
【讨论】:
我不明白你的回答。我根本无法解决我的问题。 它是用来解决冲突路由的,我为你的问题更新了答案 我只是想知道是否可以使用friendly_id。以上是关于如何将 id 添加到 Friendly_id slug?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 friendly_id 从 URL 中删除特定单词 |铁轨上的红宝石