2013-04-08 80 views
1

我试图安装宝石FriendlyId。我正在关注railscast:314-pretty-urls-with-friendlyid。它似乎很容易安装。但不为我工作。Rails: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,它应该显示产品名称。但事实并非如此。我个人安装宝石,但没有效果。

有人可以告诉我缺少什么吗?

回答

0

不知道这是为什么不说明书中提及的,但尝试:

alias_attribute :to_param, :slug 

这工作,因为to_param方法允许自定义URL的ID部分。在这里,您将该部分分配给friendly_id生成的URL。

另一种解决方案

我不知道,如果这里面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