Rails:FriendlyId宝石无法正常工作

时间:2013-04-08 15:32:36

标签: ruby-on-rails-3 rubygems friendly-url friendly-id

我正在尝试安装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

根据railscast,它应显示产品名称。但事实并非如此。我单独安装宝石但没有效果。

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

1 个答案:

答案 0 :(得分: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