Rails:FriendlyId gem 不工作

Posted

技术标签:

【中文标题】Rails:FriendlyId gem 不工作【英文标题】:Rails: FriendlyId gem not working 【发布时间】: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但没有效果。

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于Rails:FriendlyId gem 不工作的主要内容,如果未能解决你的问题,请参考以下文章

FriendlyID 历史记录不适用于 Rails 中更新的模型 url

使用 Rails 5,如何让 FriendlyId 附加 -"count+1" 来复制 slug 而不是 UUID?

引导 datepicker rails gem 不工作

rails - Gibbon mailchimp gem 将订阅者添加到列表中,但不发送确认电子邮件

如何使用Rails中的Mobility gem以一种形式实现所有翻译? [关闭]

Rails 5 - n + 1查询问题在simple_form gem中