使用 friendly_id 为具有可标记行为的标签创建 URL slug

Posted

技术标签:

【中文标题】使用 friendly_id 为具有可标记行为的标签创建 URL slug【英文标题】:Creating URL slugs for tags with acts-as-taggable-on using friendly_id 【发布时间】:2012-04-30 09:05:03 【问题描述】:

我正在尝试遵循这个问题的答案,以便为标签创建 url 友好的 slug:

Creating url slugs for tags with acts_as_taggable_on

在初始化器中我有:

ActsAsTaggableOn::Tag.class_eval do
  extend FriendlyId
  friendly_id :name, use: :slugged
end

我得到的错误是:

undefined method `slug' for #<ActsAsTaggableOn::Tag id: nil, name: "test listing">

感谢您的帮助!

【问题讨论】:

那篇文章使用的是旧的 gem,而您使用的是 FriendlyId 4.x,它需要您的 Tag 模型上的字符串类型为 slug 列。 ..我会尽快发布一些代码(目前正在上班) 【参考方案1】:

使用我在参考帖子中读到的内容,我有一个潜在的解决方案

运行rails g migration AddSlugToTags slug:string

这应该会生成以下迁移:

class AddSlugToTags < ActiveRecord::Migration
  def change
    add_column :tags, :slug, :string
  end
end

当然,运行 rake db:migrate 进行设置。

那么你上面的初始化代码应该可以工作了。

注意:我自己没有尝试过,但它会起作用是有道理的。

希望这会有所帮助。

【讨论】:

以上是关于使用 friendly_id 为具有可标记行为的标签创建 URL slug的主要内容,如果未能解决你的问题,请参考以下文章

friendly_id:可选择更新 slug

Rails:Friendly_id 不会为旧记录生成 slug

Rails:friendly_id 和 to_json

rails,friendly_id,设计用户名不显示 slug

如何使用 friendly_id 从 URL 中删除特定单词 |铁轨上的红宝石

Friendly_id 不为旧记录创建 slug