[英]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.