如何在Rails 3中的命名路由中使用包含斜杠的永久链接?

时间:2011-05-31 13:16:41

标签: ruby-on-rails-3

我跟踪了Ryan Bates关于如何在Rails应用程序中使用永久链接的截屏视频。不幸的是,当我的一些固定链接包含斜杠时,我遇到了问题。我可以在控制器中做些什么来动态编码,还是需要在数据库中进行编码?

1 个答案:

答案 0 :(得分:2)

您可以使用Rack::Utils.escape返回干净,友好的URI。例如:

Rack::Utils.escape("This/is/not/a/good/url")

将返回

"This%2Fis%2Fnot%2Fa%2Fgood%2Furl"

Rack::Utils.unescape("This%2Fis%2Fnot%2Fa%2Fgood%2Furl")

将其转换回原始字符串:

"This%2Fis%2Fnot%2Fa%2Fgood%2Furl"

你必须将这些方法连接到控制器中的find方法,但是应该为你工作。

要生成安全的永久链接,请使用类似这样的内容。它将创建一个4个字符长,url安全固定链接并检查以确保没有重复。

def create_permalink
  loop do
    self.permalink = SecureRandom.urlsafe_base64(4).downcase
    break permalink unless ModelName.find_by_permalink(permalink)
  end
end