Rails: гем FriendlyId не работает

Я пытался установить gem FriendlyId. Я слежу за railscast: 314-pretty-urls-with-friendlyid. Кажется, довольно легко установить. Но не работает для меня.

Вот шаги, которые я сделал:

added gem "friendly_id", "~> 4.0.9" in Gemfile

Затем я выполнил команду bundle install

Затем изменил мою модель продукта на это:

class Product < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name

  attr_accessible :name, :product_code, :recipe, :selling_price, :servings,   letsrate_rateable "quality", "packaging", "hygiene" , "service", "price"
  validates :name, :presence => true
  class << self
    def search(params)
             if params[:search]
                products = Product.published.includes(:product_sub_categories)
             end
    end
  end
 end

Тем не менее он показывает «id»:

http://localhost:3000/products/9

В соответствии с railscasts должно отображаться название продукта. Но это не так. Я индивидуально устанавливаю драгоценный камень, но безрезультатно.

Кто-нибудь может сказать, что мне не хватает?


person user2206724    schedule 08.04.2013    source источник


Ответы (1)


Не уверен, почему это не упоминается в руководстве, но попробуйте:

alias_attribute :to_param, :slug

Это работает, потому что метод to_param позволяет настроить часть идентификатора URL-адреса. И здесь вы назначаете эту часть сгенерированному URL-адресу friendly_id.

Другое решение

Я не уверен, реализовано ли это внутри friendly_id, но я сделал это:

class Product < ActiveRecord::Base
  def self.find(id_or_slug)
    case id_or_slug
    when String
      find_by_slug id_or_slug
    else
      super id_or_slug
    end
  end
end
person sites    schedule 30.08.2013