【问题标题】:How to add id to Friendly_id slug?如何将 id 添加到 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

【问题讨论】:

    标签: ruby-on-rails ruby seo friendly-url friendly-id


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2014-02-13
    • 2014-03-19
    • 1970-01-01
    相关资源
    最近更新 更多