我正在我的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代码。我不确定格式是什么,但我想我已经接近了。
答案 0 :(得分:0)
URI.escape
用percent-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
。不过,这是另一个问题的主题。