Ruby:定义"选项"根据功能

时间:2015-06-01 12:05:04

标签: ruby

以下函数允许我构建一个由url和一些options组成的查询:

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")中定义了url - 但如何定义options

我尝试过类似的事情:

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

但这显然是错误的。请原谅我缺乏Ruby知识。希望有人可以帮忙!

1 个答案:

答案 0 :(得分:0)

试试这个,

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