Ruby on rails 替换%20“;加上-&引用;在rails的URL中

Ruby on rails 替换%20“;加上-&引用;在rails的URL中,ruby-on-rails,ruby,regex,url,Ruby On Rails,Ruby,Regex,Url,我正在使用rails开发一个web应用程序。 出于美观目的,我需要将%20替换为- 之前: 之后: 在rails中是否还有其他方法可以实现这一点?如果字符串存储在变量url中,则可以使用 url.gsub(/%20/, "-") 返回所需字符串,或 url.gsub!(/%20/, "-") 使用所需的值实际修改url的值。如果字符串存储在变量url中,则可以使用 url.gsub(/%20/, "-") 返回所需字符串,或 url.gsub!(/%20/, "-") 要使用所需的值实际

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

之前:

之后:


在rails中是否还有其他方法可以实现这一点?

如果字符串存储在变量
url
中,则可以使用

url.gsub(/%20/, "-")
返回所需字符串,或

url.gsub!(/%20/, "-")

使用所需的值实际修改
url
的值。

如果字符串存储在变量
url
中,则可以使用

url.gsub(/%20/, "-")
返回所需字符串,或

url.gsub!(/%20/, "-")
要使用所需的值实际修改
url

应使用将其拆分,然后仅更改路径组件:

require 'uri'
u      = URI.parse(url)
u.path = u.path.gsub('%20', '-')
url    = u.to_s
仅仅是一个简单的整体URL可能会很好,但一点额外的偏执可能会节省一些混乱和痛苦的道路上。此外,如果只是替换文字字符串而不是正则表达式,则可以使用字符串作为
gsub
的第一个参数,并避免一些转义问题:

模式通常是一个Regexp;如果以字符串形式给出,则它包含的任何正则表达式元字符都将按字面解释,例如,
'\\d'
将匹配后跟
d
的齿隙,而不是数字

您应该使用将其拆分为多个部分,然后仅更改路径组件:

require 'uri'
u      = URI.parse(url)
u.path = u.path.gsub('%20', '-')
url    = u.to_s
仅仅是一个简单的整体URL可能会很好,但一点额外的偏执可能会节省一些混乱和痛苦的道路上。此外,如果只是替换文字字符串而不是正则表达式,则可以使用字符串作为
gsub
的第一个参数,并避免一些转义问题:

模式通常是一个Regexp;如果以字符串形式给出,则它包含的任何正则表达式元字符都将按字面解释,例如,
'\\d'
将匹配后跟
d
的齿隙,而不是数字

这是搜索引擎优化URL的最佳方式


这是搜索引擎优化URL的最佳方式

您可能希望在
电影
模型中将“Apna Sapna Money”作为属性保存(我通常称之为
slug
s)。然后,要生成这些,您可能只需要将电影标题中的空格替换为连字符。比如:

class Movie
  before_create :generate_slug

  private
  def generate_slug
    slug = title.gsub(" ", "-")
  end
end
然后在你的控制器动作中,你可以简单地做一个
电影!(参数[:id])
调用


基本上,用户没有理由到达包含%20的URL…

您可能想在
电影
模型中保存“Apna Sapna Money Money”作为属性(我通常称之为
slug
s)。然后,要生成这些,您可能只需要将电影标题中的空格替换为连字符。比如:

class Movie
  before_create :generate_slug

  private
  def generate_slug
    slug = title.gsub(" ", "-")
  end
end
然后在你的控制器动作中,你可以简单地做一个
电影!(参数[:id])
调用


基本上,用户没有理由到达包含%20的URL…

在哪里更改此代码?视频控制器或路由。rb?@Wen:您可能想在模型中添加一个slug,并通过slug引用模型。在谷歌上搜索一下“rails slug”广告,你应该会找到一些指针。我应该在哪里更改这些代码?视频控制器或路由。rb?@Wen:您可能想在模型中添加一个slug,并通过slug引用模型。在谷歌上搜索“rails slug”广告,你应该会找到一些指针。404这里没有GitHub页面。404这里没有GitHub页面。