ruby-on-rails - 如何根据标题重写 URL?

标签 ruby-on-rails url url-rewriting url-routing

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

用户可以发布带有标题的链接。我希望我的 URL 用于 SEO 目的来显示这些标题。我相信 stackoverflow 的工作原理与此大致相同。

如果标题是“我的 foobar 刚刚和我的猫亲热”

我希望网址为: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

希望这有帮助!

更新

对此答案的评论表明,Rails 3 用户可以使用一种新方法:#parameterizeRails API document for this method展示了如何使用它(剪切-粘贴):

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>

关于ruby-on-rails - 如何根据标题重写 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413789/

相关文章:

ruby-on-rails - 在 Rails 中添加可为空的外键

c# - 如何在.net mvc中获取带有应用程序名称的url?

php - 我如何在 URL 中将多个值传递给另一个页面

php - PHP 文件名(或其完整路径中的目录)可以包含 UTF-8 字符吗?

reactjs - 同一 Azure 存储帐户上的多个 React 站点

ruby-on-rails - 设计是否适用于具有相同帐户的多个 email_id ?

ruby-on-rails - 从命令提示符运行 Rails 应用程序时出错

ruby-on-rails - 如何为访问者向我的 Rails 应用程序添加页面缓存?

vba - 将浏览器中的 URL 复制到 Excel 中

php - 为 Laravel 路由添加 url 扩展