1

Friendly_id と rails 3.2 を使用しています。製品テーブルをクリーンな URL に変換しようとしています。新しいスラッグ列の使用に問題はなく、URL は次のように正常に生成されています

example.com/products/new-friendly-url

私が直面している問題は、一意の ID をアクティブなレコードまたはその他の一意の識別子から保持したいということです。その理由は、多くの製品が同じフレンドリーなタイトルを持っている可能性があるからです. まったく同じタイトルの製品がある場合、現在の動作により、次のような一意の ID を持つスラッグが生成されます。

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

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
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

セパレータを「-」に変更するアクションは推奨されません。ドキュメントには次のように記載されています。

スラッグ ベースを数値シーケンスから分離するために使用される文字列。

デフォルトでは、 -- はスラッグをシーケンスから分離するために使用されます。FriendlyId は 2 つのダッシュを使用して、名前に数字が含まれるスラッグとシーケンスを区別します。

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 にアップグレードすると、これは自動的に解決されます。

于 2013-09-06T06:29:23.097 に答える