我試圖從傳遞的URL中獲取變量prop
的查詢字符串的值,該查詢字符串與this線程中的紳士所做的相似。從提取URL獲取查詢字符串(如果存在)
它的工作原理是如果URL中有一個查詢字符串,但如果沒有,我會得到 CGI.parse undefined method 'split' for nil:NilClass
錯誤。我做了研究,問題是因爲沒有查詢要拆分。
所以我的問題是如何測試任何查詢字符串的存在,然後通過CGI.parse運行它,看看prop
查詢字符串是否是其中之一?我想我可以通過Regex來完成,但我希望有一個Rails解決方案。
任何幫助,將不勝感激。
感謝名單
代碼: 我也試圖讓URL引用的域名。這就是爲什麼我在那裏有這個變量。
url = request.env['HTTP_REFERER']
encoded_url = URI.encode(url.to_s)
parse = URI.parse(encoded_url)
domain = parse.host
puts domain
params = CGI.parse(parse.query)
puts params['prop'].first
UPDATE: 我得到了錯誤通過添加附加的代碼消失。但我仍然想知道是否有更好的Rails解決方案。我對Rails還是比較新的,所以我想確保我正確地做到了。
if encoded_url.include? "?prop"
params = CGI.parse(parse.query)
puts params['prop'].first
end
你確定你已經通過了rails教程嗎?這是最基本的事情之一。每個請求都與哪個HTTP動詞有一個'params'哈希無關,您可以在控制器中使用它來獲取所需密鑰的值。然後將它與'.present?'方法結合起來if123其他 –
哦,我認爲params散列只能在Rails URL中訪問。我不知道它也可用於外部URL。我遇到了與我的類似的SO問題,所以這也是導致我相信的原因。但它確實有意義,它可以在任何情況下都有效。感謝名單。 –
讓我知道這是否適合你:) –