我正在创建简单的电子商务网站。
我不想使用spree gem因为它在本地化方面存在一些问题。
所以我决定建立自己的。
我将从数据库中获取一些类别。
我们假设我选择了cars
类别,然后点击bmw x5 limited edition
所以我想让浏览器地址字符串看起来像
http://mywebsite.com/cars/bmw-x5-limited-edition
我需要这个用于seo。我不想使用像mywebsite.com/cars/5?carname=bmw-x5
这样的参数
此外,将有许多类别和产品将通过管理仪表板添加到数据库中。
那我该怎么做呢?
答案 0 :(得分:1)
在car
模型中定义方法
def to_param
carname.to_s.gsub(/\s/, '-')
end
您的网址为http://mywebsite.com/cars/bmw-x5-limited-edition
但您需要在show
操作中找到carname
操作中的记录,而不是id
,因为现在您要发送carname
代替id
希望这有帮助。
答案 1 :(得分:1)
您可以通过在汽车模型中创建to_url方法来更改网址。
def to_param
"#{name}" #=> bmw-x5-limited-edition
end
仅供参考:http://blog.teamtreehouse.com/creating-vanity-urls-in-rails
答案 2 :(得分:0)
此宝石也可以帮助您:https://rubygems.org/gems/sanetitle。它完全符合您的要求,删除特殊字符并将所有内容放在小写字母中。您还可以限制返回值中的字符数。