Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:JSON属性作为方法处理。没有方法错误_Ruby On Rails_Ruby_Json_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails:JSON属性作为方法处理。没有方法错误

Ruby on rails Rails:JSON属性作为方法处理。没有方法错误,ruby-on-rails,ruby,json,ruby-on-rails-3,Ruby On Rails,Ruby,Json,Ruby On Rails 3,我在访问JSON数据的属性时遇到问题。它认为JSON数据是一个函数,而不是访问JSON数据 @response = HTTParty.get('http://localhost:4000/test') @json = JSON.parse(@response.body) @json.each do |pet| MyModel.create(pet) ! WORKS puts "my object #{pet}" ! WORKS puts "my object

我在访问JSON数据的属性时遇到问题。它认为JSON数据是一个函数,而不是访问JSON数据

 @response = HTTParty.get('http://localhost:4000/test')
 @json = JSON.parse(@response.body)
  @json.each do |pet|
  MyModel.create(pet)       ! WORKS
  puts "my object #{pet}"   ! WORKS
  puts "my object attribute #{pet.myattribute}" ! DOES NOT WORK
  end
没有
方法错误myattribute

谢谢你的帮助

@json=json.parse(@response.body)
返回一个散列,因此需要执行以下操作

puts "my object attributes #{pet['id']}, #{pet['title']}"
您可能希望转换为,以便可以使用符号而不是带引号的字符串,即

@json = JSON.parse(@response.body).with_indifferent_access
# ...
puts "my object attributes #{pet[:id]}, #{pet[:title]}"

您可能已经习惯了JavaScript,其中
object.some\u key
object[“some\u key”]
做同样的事情。在Ruby中,散列只是一个散列,因此您必须通过
对象[“some_key”]
访问值。Ruby中的
Struct
类似于JavaScript对象,因为您可以通过两种方式访问值,但键必须是预定义的。

pet看起来像什么?
{“pet_id”:“49926”,title:“我的title”}
。当访问
pet\u id
时,它会显示
NoMethodError
<代码>命名错误:未定义的#方法pet_id'谢谢!现在使用
pet['title']