这是一个相当开放的问题,我只是在寻找最好的途径。
用户可以发布带有标题的链接。我希望我的URL用于搜索引擎优化目的,以显示这些标题。我相信stackoverflow的工作原理大致相同。
所以,如果标题是“我的foobar刚刚与我的猫一起制作”
我希望网址为:www.website.com/posts/My-foobar-just-made-out-with-my-cat
有什么想法吗?
提前非常感谢!!
答案 0 :(得分:2)
我在一个旧的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
希望这有帮助!
<强>更新强>
对此答案的评论表明,Rails 3用户可以使用新方法:#parameterize
。 Rails API document for this method显示了应该如何使用(cut-n-paste):
class Person
def to_param
"#{id}-#{name.parameterize}"
end
end
@person = Person.find(1)
# => #<Person id: 1, name: "Donald E. Knuth">
<%= link_to(@person.name, person_path %>
# => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
答案 1 :(得分:2)
有一个非常棒的插件,FriendlyId可以为你处理所有这些。大量非常聪明的功能,包括标题更改的范围和301重定向处理。这与stackoverflow和Brian的方法不同,因为id未在url中使用。