Rails
GoogleChartAPI
OpenWeatherMap
Chartkick

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

More than 1 year has 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>
...