Ruby - 未定义的方法' has_key?'三元派

时间:2014-08-03 15:55:43

标签: ruby hash

当我尝试将字符串分配给变量时,我在Ruby上遇到以下错误:

undefined method 'has_key?' for nil:NilClass (NoMethodError)

生成错误的代码如下:

uri = !@meta.has_key?("offset") ? "#{@@user_uri}?order=asc" : "#{@@user_uri}?per_page=#{per_page}&page=#{@meta['offset']}?order=asc"

如果删除分配并将其替换为puts,则按预期工作

puts !@meta.has_key?("offset") ? "#{@@user_uri}?order=asc" : "#{@@user_uri}?per_page=#{per_page}&page=#{@meta['offset']}?order=asc"
> http://example.com/users?order=asc

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

当您使用puts时,@meta似乎有不同的值。请仔细检查。

在任何情况下,为什么不尝试@meta之前确保nil不是Hash

return if @meta.nil?
uri = !@meta.key?("offset") ? "#{@@user_uri}?order=asc" : "#{@@user_uri}?per_page=#{per_page}&page=#{@meta['offset']}?order=asc"

我为密钥更改了has_key??作为has_key? has been deprecated