2011-03-09 19 views
2

什麼是更好的方法來做到這一點?如何更改ruby中url參數的值?

理想的情況下使用URI解析類的某種,而不是依靠我自己的正則表達式你的問題

url = "http://example.com" //or "http://example.com?after=111" 

    next_url = url.gsub(/after=\d+/,"666") 
    if !next_url.eql?(url) 
    if (new2.include?('?') == false) 
     next_url = url + "?after=666" 
    else 
     next_url = url + "&after=666" 
    end                                               
    end                                                                                              
    puts next_url  
+0

使用三元運算符 – 2011-03-09 23:07:36

回答

3

我建議使用Addressable寶石,當你正在服用的網址分開或將它們整合在一起。這是非常全面的,具有query_values(options = {})query_values=(new_query_values)所有的查詢組件抽取到一個哈希,或者從一個哈希重建。它還將根據需要處理解碼和編碼參數,這些URI不會爲您做。

0

不知道,但你可能想是這樣的?

path, query = url.split('?') 
query = (query||'').scan(/(.+)=(.+)/).map{|k, v| "#{k}=#{k == 'after' ? 666 : v}"}.join('&') 
puts [path, query].join('?') 
0

有一個稱爲URI一個Ruby庫來處理分析和URL的建設。