
By: Manuel Calavera – CC BY 2.0
前回
こちらのサンプルを使用させてもらいました。
Model
昨日の一覧から個別銘柄の日足チャートを表示させる
1 2 3 4 5 6 7 8 9 10 11 12 13 | create_table "daily_trades", force: true do |t| t.date "trade_date" t.integer "start_value" t.integer "high_value" t.integer "low_value" t.integer "last_value" t.integer "dealings" t.integer "margin_selling" t.integer "margin_dept" t.integer "meigara_id" t.datetime "created_at" t.datetime "updated_at" end |
db/seeds.rb
関連するデータに挿入していく
CSVが10000近くあるので、数時間かかる.SQLiteだとエラーで止まるのでPostgreSQLにした.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | Meigara.delete_all require 'csv' CSV.foreach("db/meigara.csv") do |row| next if row[1] === "銘柄名" market = Market.find_or_create_by(title: row[2]) category = Category.find_or_create_by(title: row[3]) settle_date = SettleDate.find_or_create_by(content: row[8]) h = { code_id: row[0], name: row[1], market_id: market.id, category_id: category.id, capital: row[4], stock_unit: row[5], total_assets: row[6], dept: row[7], settle_date_id: settle_date.id } p h meigara = Meigara.create!(h) CSV.foreach("db/dd/#{meigara.code_id}.CSV") do |r| d = { trade_date: r[0], start_value: r[1], high_value: r[2], low_value: r[3], last_value: r[4], dealings: r[5], margin_selling: r[6], margin_dept: r[7], meigara_id: meigara.id } DailyTrade.create!(d) end end |
showをついかする
config/routes.rb
1 | get 'meigaras/:id' => 'main#show', as: :meigara |
Controller
1 2 3 | def show @meigara = Meigara.find(params[:id]) end |
show.html.erb
1 2 3 4 | <h2><%= @meigara.name %></h2> <div id="graph">loading....</div> <%= link_to "トップへ", root_path %> <%= javascript_include_tag meigara_path(@meigara, format: :js) %> |
show.js.coffee
Rails3.2でCoffeeScriptをerbテンプレートとして使う件
1 2 3 4 5 | $ -> $("#graph").text("") d3.json("<%=j meigara_url(@meigara,format: 'json') %>", draw) draw = (data)-> |
show.json.jbuilder
とりあえず60個位のデータでやってみる
1 2 3 4 5 6 7 8 | json.array! @meigara.daily_trades.limit(60) do |dt| json.tradeDate dt.trade_date json.startValue dt.start_value json.highValue dt.high_value json.lowValue dt.low_value json.lastValue dt.last_value json.dealings dt.dealings end |
d3.jsライブラリを追加する
公式からダウンロードしてvendor/ assets/javascripts/にでもいれておく
application.jsにd3.v3を加えておく
グラフを描く
続きは次回