2013-04-08 4 views
1

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

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

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 

Тем не менее она показывает 'идентификатор':

http://localhost:3000/products/9 

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

Может ли кто-нибудь сказать, чего я не хватает?

ответ

0

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

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