将 Rails URL 中的“%20”替换为“-”

Wen*_*Jun 1 ruby regex url ruby-on-rails

我正在使用 Rails 开发一个 Web 应用程序。出于美观目的,我需要将 %20 替换为 -

之前:http://localhost:3000/movies/2006/Apna%20Sapna%20Money%20Money

之后:http://localhost:3000/movies/2006/Apna-Sapna-Money-Money

无论如何我可以在 Rails 中实现这一点吗?

mu *_*ort 5

您应该URI.parse将其分成几部分,然后仅更改路径组件:

require 'uri'
u      = URI.parse(url)
u.path = u.path.gsub('%20', '-')
url    = u.to_s
Run Code Online (Sandbox Code Playgroud)

只需一个简单的gsub整个 URL 就可以正常工作,但是一点额外的偏执可能会为您节省一些混乱和痛苦。另外,如果您只是替换文字字符串而不是正则表达式,则可以使用字符串作为第一个参数gsub并避免一些转义问题:

模式通常是正则表达式;如果作为字符串给出,则它包含的任何正则表达式元字符都将按字面解释,例如'\\d'将匹配反斜杠后跟d, 而不是数字。