使用url unescape在字符串的视图中构建URL

时间:2016-06-08 22:13:04

标签: ruby url

我正在我的sinatra应用程序中构建一个URL

我在我的应用中需要URI模块。

<li><a href="/blog/#{URI.unescape(<%= blog.title %>)}/<%= blog.slug %>"" method="get">Show</a></li>

没有URI.unescape当我将鼠标悬停在链接上时,我看不到%20。我只是看到了这个:

http://127.0.0.1:9292/blog/Coffee Title/49459

我希望这个空间是-。但是当我点击链接时,它将在我的浏览器中返回:

http://127.0.0.1:9292/blog/Coffee%20Title/49459

我尝试在irb中使用URI.unescape。我无法在字符串中评估Ruby代码。我不确定格式是什么,但我想我已经接近了。

1 个答案:

答案 0 :(得分:0)

URI.escapepercent-encoded counterpart替换字符串中的字符,这就是空格字符变为%20的原因(20是空格的ASCII字符代码)。它不会用破折号替换空格。

要将字符替换为字符串中的其他字符,请使用String#tr

title = "Coffee Title"
title_with_dashes = title.tr(" ", "-")
puts title_with_dashes
# => Coffee-Title

然而,这只是等式的一半。您已更改链接中的网址,但因此,当有人点击该链接时,您的服务器可能无法识别该网址,因为存在的路径为Coffee Title,而非Coffee-Title。不过,这是另一个问题的主题。