如何将参数发送到方法?
How to send params to a method?
我正在尝试使用 Ruby 客户端向网站站长工具 api 进行查询。
params = {
start_date: "2015-01-14",
end_date: "2015-01-14"
}
AuthWebmastersService.query_search_analytics("http://www.ex.com/", params)
当我尝试发出该请求时,我得到 ArgumentError (unknown keywords: start_date, end_date)
,为什么会这样?
Here是方法定义。
因为它只接受关键字参数fields
、quota_user
、user_ip
、options
,而start_date
、end_date
则不是其中。
这个错误:
ArgumentError (unknown keywords: start_date, end_date)
告诉您您指定了错误的关键字属性。
您的方法需要:
def query_search_analytics(site_url, search_analytics_query_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
- site_url 作为第一个参数
- search_analytics_query_request_object - 作为第二个参数,默认值为 nil
- 多个关键字参数(和一个块)
当你像你写的那样调用你的方法时:
- site_url 的值为“http://www.ex.com/”
- search_analytics_query_request_object 将为零
- 和哈希将应用于关键字参数,ruby 将引发错误,因为没有 startDate 和 endDate 关键字参数
您需要做的是:
query_search_analytics("http://www.ex.com/", options: params)
它没有按预期工作,因为 Ruby 将您的哈希值转换为 关键字参数 ,即
query_search_analytics("...", {start_date: "2015-01-14", end_date: "2015-01-14"})
变为:
query_search_analytics("...", start_date: "2015-01-14", end_date: "2015-01-14")
要获得预期结果,您必须附加一个空散列:
query_search_analytics("http://www.ex.com/", params, {})
这是一个 ruby 问题,auto-expanding 如果最后一个参数是散列。
两个解决方法:
1 - 使用适当的对象而不是散列:
params = Google::Apis::WebmastersV3::SearchAnalyticsQueryRequest.new(
start_date: "2015-01-14",
end_date: "2015-01-14"
)
AuthWebmastersService.query_search_analytics("http://www.ex.com/", params)
2 - 附加一个空散列作为参数:
params = {
start_date: "2015-01-14",
end_date: "2015-01-14"
}
AuthWebmastersService.query_search_analytics("http://www.ex.com/", params, {})
我正在尝试使用 Ruby 客户端向网站站长工具 api 进行查询。
params = {
start_date: "2015-01-14",
end_date: "2015-01-14"
}
AuthWebmastersService.query_search_analytics("http://www.ex.com/", params)
当我尝试发出该请求时,我得到 ArgumentError (unknown keywords: start_date, end_date)
,为什么会这样?
Here是方法定义。
因为它只接受关键字参数fields
、quota_user
、user_ip
、options
,而start_date
、end_date
则不是其中。
这个错误:
ArgumentError (unknown keywords: start_date, end_date)
告诉您您指定了错误的关键字属性。
您的方法需要:
def query_search_analytics(site_url, search_analytics_query_request_object = nil, fields: nil, quota_user: nil, user_ip: nil, options: nil, &block)
- site_url 作为第一个参数
- search_analytics_query_request_object - 作为第二个参数,默认值为 nil
- 多个关键字参数(和一个块)
当你像你写的那样调用你的方法时:
- site_url 的值为“http://www.ex.com/”
- search_analytics_query_request_object 将为零
- 和哈希将应用于关键字参数,ruby 将引发错误,因为没有 startDate 和 endDate 关键字参数
您需要做的是:
query_search_analytics("http://www.ex.com/", options: params)
它没有按预期工作,因为 Ruby 将您的哈希值转换为 关键字参数 ,即
query_search_analytics("...", {start_date: "2015-01-14", end_date: "2015-01-14"})
变为:
query_search_analytics("...", start_date: "2015-01-14", end_date: "2015-01-14")
要获得预期结果,您必须附加一个空散列:
query_search_analytics("http://www.ex.com/", params, {})
这是一个 ruby 问题,auto-expanding 如果最后一个参数是散列。
两个解决方法:
1 - 使用适当的对象而不是散列:
params = Google::Apis::WebmastersV3::SearchAnalyticsQueryRequest.new(
start_date: "2015-01-14",
end_date: "2015-01-14"
)
AuthWebmastersService.query_search_analytics("http://www.ex.com/", params)
2 - 附加一个空散列作为参数:
params = {
start_date: "2015-01-14",
end_date: "2015-01-14"
}
AuthWebmastersService.query_search_analytics("http://www.ex.com/", params, {})