如何根据标题重写URL?

这是一个相当开放的问题,我只是在寻找最好的途径。

用户可以发布带有标题的链接。 我希望我的URL用于搜索引擎优化目的,以显示这些标题。 我相信stackoverflow的工作原理大致相同。

所以,如果标题是“我的foobar只是用我的猫做出来的”

我希望url为: www.website.com/posts/My-foobar-just-made-out-with-my-cat

有任何想法吗?

非常感谢提前!!

我在一个旧的Rails 2.x应用程序中使用它。 擦洗标题可能有更好的方法……

(进入你的模型)

 def to_param seo_uri end def seo_uri "#{self.id}-#{self.title.gsub(/[^a-z0-9]+/i, '-').gsub(/-{2}/, '-').gsub(/-$/, '')}" end 

希望这可以帮助!

UPDATE

对此答案的评论表明,Rails 3用户可以使用新方法: #parameterize 。 此方法的Rails API文档显示了应该如何使用它(cut-n-paste):

 class Person def to_param "#{id}-#{name.parameterize}" end end @person = Person.find(1) # => # <%= link_to(@person.name, person_path %> # => Donald E. Knuth 

有一个非常棒的插件, FriendlyId将为您处理所有这些。 大量非常聪明的function,包括标题更改的范围和301重定向处理。 这与stackoverflow和Brian的方法不同,因为id未在url中使用。