自定义网址建设导轨

时间:2016-02-27 18:59:52

标签: ruby-on-rails

我正在创建简单的电子商务网站。 我不想使用spree gem因为它在本地化方面存在一些问题。 所以我决定建立自己的。 我将从数据库中获取一些类别。 我们假设我选择了cars类别,然后点击bmw x5 limited edition 所以我想让浏览器地址字符串看起来像 http://mywebsite.com/cars/bmw-x5-limited-edition

我需要这个用于seo。我不想使用像mywebsite.com/cars/5?carname=bmw-x5这样的参数 此外,将有许多类别和产品将通过管理仪表板添加到数据库中。 那我该怎么做呢?

3 个答案:

答案 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。它完全符合您的要求,删除特殊字符并将所有内容放在小写字母中。您还可以限制返回值中的字符数。