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