2015-06-01 19 views
-2

以下功能允許我建立一個查詢由url和若干的options:所述url定義紅寶石:定義的「選項」按功能

require 'cgi' 
require 'openssl' 
require 'open-uri' 

def function(url, options={}) 
key = '...' 
secret = '...' 

parameters = { 
    :url  => url, 
    :param1 => options[:param1], 
    :param2 => options[:param2] 
} 

query = parameters. 
    sort_by {|s| s[0].to_s }. 
    select {|s| s[1] }.  
    map {|s| s.map {|v| CGI::escape(v.to_s) }.join('=') }. 
    join('&') 

secret_key = Digest::MD5.hexdigest(url + secret_keyword) 

"https://domain.com/action?key=#{access_key}&secret=#{secret}&#{query}" 
end 

puts function "www.domain.com" 

在最後一行(puts function "www.domain.com") - 但我怎樣才能定義options

我想是這樣的:

puts function ("www.domain.com", param1 = "1", param2 = "2") 

但是這顯然是錯誤的。請原諒我缺乏Ruby知識。希望有人能幫助!

+0

左括號 –

+0

@SergioTulentsev之前,不要把一個空間:刪除它,現在它說:'不能轉換成符號Integer' - 任何想法可能是什麼導致這個? – Frank

回答

0

嘗試這樣,

puts function("www.domain.com", { param1: "1", param2: "2"}) 
+0

,給我一個語法錯誤:語法錯誤,意外',',期待')' – Frank

+0

嘗試編輯一個。或者它在同一行上發生錯誤? –

+0

刪除這個空間會導致兩個不同的錯誤:'unexpected':',期待tASSOC'&'unexpected',',期待$ end' – Frank