Jon Smock 的解决方案也可以。我倾向于以下。
class Hamburger << ActiveRecord::Base
#this normally defaults to id
def to_param
name
end
end
class SomeModelController << ApplicationController
def show
@hamburger = Hamburger.find(params[:id]) #still default code
end
end
#goes in some view
This is the <%= link_to "tastiest hamburger ever", url_for(@hamburger) %>.
粗略地说,这是一种 SEO 技术(漂亮的 URL 也是用户友好的,即使您不关心 SEO,我也向所有人推荐它们,例如在登录后的页面上)。我对 Rails SEO 进行了更深入的讨论,其中包括其他类似的技巧,请点击此处。
重要提示:param
您应该在设计时考虑如果应该更改您将要做什么。例如,在我的汉堡包场景中,我完全有可能将“Sinfully Delicious Cheeseburger”重命名为“Triple Bypass”。如果这更改了 URL,则可能会产生一些影响,例如客户指向我的网站的链接被破坏。因此,对于生产用途,我通常给这些模型一个不可变的permalink
属性,我将其初始化为仅对人类有意义一次。如果对象稍后发生变化,哦,好吧,URL 保持不变。(还有其他解决方案——这只是最简单的一个。)