繁体   English   中英

带有rails的friendly_id gem,可转换为SEO友好网址

[英]friendly_id gem with rails, converting to SEO friendly urls

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

example.com/products/new-friendly-url

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

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

因此friendly_id会生成唯一的标签,但我只是尝试更改格式,不确定该在何处/如何执行。

有没有一种方法可以删除多余的-,而只添加一个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

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

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

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

用于将子句基数与数字序列分开的字符串。

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

您可以通过设置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,它将自动解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM