簡體   English   中英

將 URL 中用於導軌的“%20”替換為“-”

[英]Replace “%20” with “-” in URL for rails

我正在使用 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

整個 URL 上的一個簡單的gsub可能會正常工作,但一點額外的偏執可能會為您節省一些困惑和痛苦。 此外,如果您只是替換文字字符串而不是正則表達式,則可以使用 String 作為gsub的第一個參數,並避免一些 escaping 問題:

模式通常是一個正則表達式; 如果作為字符串給出,它包含的任何正則表達式元字符都將按字面解釋,例如'\\d'將匹配后跟d的反斜杠,而不是數字。

如果您的字符串存儲在變量url中,您可以使用

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

返回您想要的字符串,或

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

用您想要的值實際修改url的值。

https://github.com/FriendlyId/friendly_id

這是 go 關於 seo 網址的最佳方式

您可能希望在您的Movies model 中保存“Apna-Sapna-Money-Money”作為屬性(我通常稱這些slug s)。 然后,要生成這些,您可能只需要用連字符替換電影標題中的空格。 就像是:

class Movie
  before_create :generate_slug

  private
  def generate_slug
    slug = title.gsub(" ", "-")
  end
end

然后在您的 controller 操作中,您可以簡單地執行Movie.find_by_slug:(params[:id])調用。

基本上,用戶應該沒有理由到達帶有 %20 的 URL ......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM