【问题标题】:friendly_id gem with rails, converting to SEO friendly urls带有rails的friendly_id gem,转换为SEO友好的url
【发布时间】:2013-09-06 04:35:51
【问题描述】:

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

example.com/products/new-friendly-url

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2019-11-08
      相关资源
      最近更新 更多