用 Addressable::URI 給網址帶參數

NickWarm
Nickwarm Journey
Published in
3 min readAug 1, 2018
Photo by Luis Alfonso Orellana on Unsplash

在現在的網站,我們通常會給網址帶像是 utm 參數,來做資料分析,i,e:

https://www.edx.org/course/question-everything-scientific-thinking-in-real-life?utm_source=sailthru&utm_medium=email

有時候我們用第三方的表單服務,像是 SurveyCakeTypeForm 也會想把 user 的資料 (i.e: user_id ) 帶進第三方服務的表單頁面裡,讓 user 不用填一些我們的 database 已有的資料

隨著我們帶的參數越多,網址會越長。若是遇到要給第三方服務帶動態參數(i.e: 不同user id 不同 user email),維護會更加困難

這種情況下,我會較傾向用 addressable 來實作「給帶網址帶參數」這件事

Addressable

Addressable 是為了取代了 Ruby 內建的 URI 而做的。

Addressable 的 README 內容實在很少,專案上的 wiki 也沒有東西,不過它的 source code 註解滿清楚的

建議先看

常會用 query_values= 來埋參數。像是表單會透過埋參數的方式來帶 user 資料,或是埋 utm來做 tracking。

就已前面提到的網址做例子:

於是我會寫成

url = Addressable::URI.parse("https://www.edx.org/course/question-everything-scientific-thinking-in-real-life")queries = { utm_source: "sailthru", utm_medium: "email" }
url.query_values = queries # 開始塞參數
url.to_s # 轉換成 string 就能讓 link_to 使用

相關文章

--

--

NickWarm
Nickwarm Journey

Rubyist。Nicholas aka Nick. Experienced in Ruby, Rails. I like to share the experiences what I learned.