friendly_id gem with rails,转换为SEO友好的网址

时间:2013-09-06 04:35:51

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

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

example.com/products/new-friendly-url

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

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

所以friendly_id正在产生独特的slu ,,但我只是想改变格式而不确定在哪里/怎么做。

有没有办法删除额外的 - 只有一个“ - ”,friendly_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

1 个答案:

答案 0 :(得分:3)

您可以在friendly-id。

的配置中更改序列分隔符
class Product < ActiveRecord::Base
  extend FriendlyId
  friendly_id :title do |config|
    config.use :slugged
    config.sequence_separator = ":"  
  end 
end

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

  

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

     

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

     

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

     

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

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

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