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?
rails - Gibbon mailchimp gem 将订阅者添加到列表中,但不发送确认电子邮件