Ruby on rails 3 Rails:FriendlyId宝石不工作
我正在尝试安装gem FriendlyId。我正在关注railscast:314个带有friendlyid的漂亮URL。安装起来似乎很容易。但不是为我工作 以下是我所做的步骤:Ruby on rails 3 Rails:FriendlyId宝石不工作,ruby-on-rails-3,rubygems,friendly-url,friendly-id,Ruby On Rails 3,Rubygems,Friendly Url,Friendly Id,我正在尝试安装gem FriendlyId。我正在关注railscast:314个带有friendlyid的漂亮URL。安装起来似乎很容易。但不是为我工作 以下是我所做的步骤: added gem "friendly_id", "~> 4.0.9" in Gemfile 然后我运行bundle安装命令 然后将我的产品模型修改为: class Product < ActiveRecord::Base extend FriendlyId friendly_id :name
added gem "friendly_id", "~> 4.0.9" in Gemfile
然后我运行bundle安装命令
然后将我的产品模型修改为:
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
根据railscasts,应显示产品名称。但事实并非如此。我单独安装gem,但没有效果
有人能告诉我遗漏了什么吗?不确定为什么指南中没有提到这一点,但请尝试:
alias_attribute :to_param, :slug
这是因为to_param方法允许自定义URL的id部分。在这里,您将该部分分配给友好的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
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