1

我正在使用friendly_id 和rails 3.2。我正在尝试将产品表转换为具有干净的网址。我使用新的 slug 列没有问题,并且 url 生成得很好

example.com/products/new-friendly-url

我遇到的问题是,我仍然想保留活动记录中的唯一 ID 或其他一些唯一标识符。原因是,许多产品可能具有相同的友好标题。如果我有一个具有完全相同标题的产品,则当前行为正在生成一个已经具有一些唯一标识的 slug,例如:

example.com/products/new-friendly-url--2

所以friendly_id 正在生成独特的蛞蝓,但我只是想改变格式,不知道在哪里/如何做到这一点。

有没有办法删除多余的 -- 并且只添加一个友好 ID 正在添加的“-”?

这是我的模型

       class Product < ActiveRecord::Base
       extend FriendlyId
       friendly_id :title, :use => :slugged

       attr_accessible :description, :image, :posted_by, :title, :url,       
       :price

       validates_format_of :price, :with => /^[0-9]+$/

       belongs_to :user
       has_many :comments
4

1 回答 1

3

您可以在friendly-id 的配置中更改序列分隔符。

class Product < ActiveRecord::Base
  extend FriendlyId
  friendly_id :title do |config|
    config.use :slugged
    config.sequence_separator = ":"  
  end 
end

不建议将分隔符更改为“-”的操作。文件说:

用于将 slug 碱基与数字序列分开的字符串。

默认情况下, -- 用于将 slug 与序列分开。FriendlyId 使用两个破折号来区分序列和名称中带有数字的 slug。

您可以通过设置 sequence_separator 配置选项来更改默认分隔符。

出于显而易见的原因,您应该避免将其设置为“-”,除非您确定您永远不会想要一个包含数字的友好 id。

http://norman.github.io/friendly_id/4.0/FriendlyId/Slugged/Configuration.html#sequence_separator-instance_method

如果你可以使用 Rails 4,你可以将友好 ID 升级到 5.0,它会自动解决这个问题。

于 2013-09-06T06:29:23.097 回答