【问题标题】:Rails: FriendlyId gem not workingRails:FriendlyId gem 不工作
【发布时间】:2013-03-30 18:39:08
【问题描述】:

我正在尝试安装 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,它应该显示产品名称。但事实并非如此。我单独安装gem但没有效果。

谁能告诉我我错过了什么?

【问题讨论】:

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


    【解决方案1】:

    不知道为什么指南中没有提到这一点,但请尝试:

    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
    

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 2017-04-10
      • 2013-06-22
      • 2011-07-09
      相关资源
      最近更新 更多