LoginSignup
4
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-03-19

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4