如何在rails中创建哈希URL?

时间:2012-07-30 16:25:45

标签: ruby-on-rails controller routes

我有一个产品控制器,允许我以通常的轨道方式访问show方法

product GET    /products/:id(.:format)                 products#show

现在,我希望每个产品都有一个唯一的哈希URL,可以在根路径访问,例如     mydomain.com/24fe3455g

最好的方法是什么?

最佳

菲利普

2 个答案:

答案 0 :(得分:0)

你可以在数据库中为每一行存储一个md5 - 例如为id+timestamp计算这个md5(作为连接字符串),然后让你的路由如下:

product GET    /products/:hash(.:format)                 products#show

您还可以使用UUID作为generatind unique id's

答案 1 :(得分:0)

首先,您需要在routes.rb中定义匹配的路线。由于它是一种“堕落”,你通常会把它放在路线的尽头。请查看有关如何定义该指南的指南:http://guides.rubyonrails.org/routing.html

如果您希望始终在整个应用程序中使用此哈希样式的网址而不是ID,则还应在模型中实施to_paramself.from_param方法:http://apidock.com/rails/ActiveRecord/Base/to_param

如果您喜欢某些工具支持,也可以使用像friendly_id这样的gem:http://rubydoc.info/github/norman/friendly_id/master/file/Guide.rdoc