2014-04-27 34 views
1

我有問題訪問我的JSON數據的屬性。它認爲這是一個功能,而不是訪問JSON數據。Rails: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 

沒有MethodError myattribute

謝謝你的幫助!

+0

「寵物」是什麼樣的? –

+0

'{「pet_id」:「49926」,標題:「我的標題」}'。當訪問'pet_id'時它會說'NoMethodError'。 'NoMethodError:undefined method pet_id'for#' – zer02

回答

1

@json = JSON.parse(@response.body)返回一個哈希值,所以你需要做的

puts "my object attributes #{pet['id']}, #{pet['title']}" 

你可能要轉換爲HashWithIndifferentAccess,所以你可以用符號代替引號字符串,即

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

謝謝!現在和'pet ['title']'一起工作 – zer02

2

您可能用於JavaScript,其中object.some_keyobject["some_key"]做同樣的事情。在Ruby中,散列只是一個散列,因此您必須通過object["some_key"]訪問值。 Ruby中的Struct類似於JavaScript對象,因爲您可以兩種方式訪問​​值,但必須預先定義鍵。

相關問題