我想要做的是通過哈希循環並將某些鍵的值保存到數據庫。這個散列有嵌套的關鍵字,我努力尋找一種合適的方式來循環它。循環遍歷Rails控制器中的嵌套哈希
首先,我解析照片的JSON(從500px的API),並把反應到終端:
def index
@photos = JSON.parse(get_access_token.get('/v1/photos/search?term=california').body)
p @photos
save @photos
end
我在控制檯得到的迴應是一切很好,而且看起來是這樣的。 (我剪下來,所以它不會佔用太多的空間):
{
"current_page": 1,
"total_pages": 50,
"total_items": 8263,
"photos": [
{
"id": 4930535,
"name": "Bike",
"description": "",
"times_viewed": 28,
"rating": 27,
"created_at": "2012-02-10T00:39:03-05:00"
},
{
"id": 4930206,
"name": "Rain",
"description": "",
"times_viewed": 1,
"rating": 59.7,
"created_at": "2012-02-10T00:04:09-05:00"
},
{
"id": 4930202,
"name": "California",
"description": "",
"times_viewed": 100,
"rating": 58.2,
"created_at": "2012-02-10T00:05:25-05:00"
}
]
}
我再通過photos
試圖循環並保存name
,description
和times_viewed
的分貝,使用該保存方法。
def save photos
photos.each do |photo|
p = Photo.new(:name => photo["photos"]["name"], :description => photo["photos"]["description"], :times_viewed => photo["photos"]["times_viewed"])
p.save
end
end
麻煩的是,這些照片主要的嵌套,並且在終端引發此錯誤:
TypeError (no implicit conversion of String into Integer):
app/controllers/photos_controller.rb:18:in `[]'
app/controllers/photos_controller.rb:18:in `block in save'
app/controllers/photos_controller.rb:17:in `each'
app/controllers/photos_controller.rb:17:in `save'
app/controllers/photos_controller.rb:10:in `index'
這樣做完美。非常感謝! – gosseti