■追加した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>
...