Edited at

外部APIから取得した予想気温データをチャート表示

More than 3 years have passed since last update.

■追加したGem

chartkick

googlecharts

■Model


temp_forecast.rb

require 'open-uri'

require 'json'

class TempForecast < ActiveRecord::Base
def self.get_demo_data
response = open('http://api.openweathermap.org/data/2.5/forecast?q=Tokyo&units=metric&appid=')
#今回は東京の5日間の気温予測データを扱う
#appidはログインして取得
#openで取得してきたデータをresponseに突っ込む
data = response.read
#responseのデータを読みだし、dataに突っ込む
json = JSON.parse(data)
#JSONデータ・フォーマットにして、jsonに突っ込む
temp_tbl = []
#チャート表示用テーブルをつくる
json["list"].each do |hash|
#jsonからそのままデータを読もうとすると、冒頭のいらない位置情報がついてくるので、
#肝心の温度データがあるlistを読む
#.eachでjsonを頭からケツまで読む
temp_tbl << [hash['dt_txt'], hash['main']['temp']]
#さっき作ったtemp_tblに格納する
#その際に、チャートに出したいdt_txt、tempを指定する
#mainがtempについてるのは、tempがmainの下に入っているから
end
temp_tbl
#チャート表示用テーブルに格納したデータを返す
end
end


■Controller


temp_controller

...

def home
@chart_data = TempForecast.get_demo_data
end
...

■View


home.html.erb

...

<div class="col-xs-6">
<%= line_chart @chart_data %>
<!--棒グラフ(Line chart)を使う場合は、日時フォーマットのデータが入っていないと正しく表示されない-->
</div>
...