ruby-on-rails - 在 Rails 的 URL 中将 "%20"替换为 "-"

标签 ruby-on-rails ruby regex url

我正在使用 Rails 开发 Web 应用程序。 为了美观,我需要将 %20 替换为 -

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

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

无论如何我可以在 rails 中实现这个吗?

最佳答案

你应该使用 URI.parse将其分解成多个部分,然后仅更改路径部分:

require 'uri'
u      = URI.parse(url)
u.path = u.path.gsub('%20', '-')
url    = u.to_s

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

The pattern is typically a Regexp; if given as a String, any regular expression metacharacters it contains will be interpreted literally, e.g. '\\d' will match a backlash followed by d, instead of a digit.

关于ruby-on-rails - 在 Rails 的 URL 中将 "%20"替换为 "-",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6742244/

相关文章:

ruby - %{} 在 Ruby 中做什么?

ruby-on-rails - RoR,我应该如何建模?

PHP Regex - 用完全关闭替换所有自关闭标签

ruby-on-rails - 如何使用 Rails Form 和 Role Model Gem 添加多个角色

ruby - Rhomobile 和 Appcelerator 是直接竞争对手吗?

ruby-on-rails - 设置用于在 Rails 中发送邮件的 SMTP 设置

javascript - 向正则表达式添加条件

regex - Haskell 正则表达式非捕获组

ruby-on-rails - 使用 Zeitwerk 自动加载器在 Rails 6 中命名空间服务对象

基于最后检索的记录的 SQL 分页