Gem chart.jsの導入方法(Docker+Rails)

Gemfileに記述します。↓

Gemfile

gem 'rails', '~> 5.1.7'
gem 'puma', '~> 3.7'
gem 'sass-rails', '~> 5.0'
gem 'bootstrap-sass', '3.3.7'
gem 'font-awesome-sass'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'turbolinks', '~> 5'
gem 'bcrypt', '~> 3.1.7'
gem 'kaminari'
gem 'rails-i18n', '~> 5.1'
gem 'jbuilder', '~> 2.5'

gem 'chart-js-rails', '~> 0.1.4' ←追加

コンテナを作ります

docker-compose build

コンテナを起動します

docker-compose up -d

コントローラを作成(名前は任意でOKです。ここではsmall_stepsとしている)

docker-compose exec web rails g controller small_steps index

package.jsonに以下を記述します


{
  "name": "chart_js_sample",
  "private": true,
  "dependencies": {
    "chart.js": "^2.7.1" ←追加
  }
}

Railsアプリがライブラリを読み込めるように以下を記述します。

/app/assets/javascripts/application.js
//= require rails-ujs
//= require turbolinks
//= require jquery3
//= require jquery_ujs
//= require jquery
//= require Chart.min  ←追加
//= require bootstrap
//= require_tree .

ビューに以下を記述します。

small_steps/index.html.erb

<h1 class="text-center">スモールステップとビッグエリア</h1>
<canvas id="myChart" width="200" height="200"></canvas>
<script>draw_graph();</script>

Javascript部分はCoffeeScriptに変換します。

app/assets/javascripts/small_steps.coffee
window.draw_graph = ->
  ctx = document.getElementById("myChart").getContext('2d')
  myChart = new Chart(ctx, {
    type: 'bar',
    data: {
      labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
      datasets: [{
        label: '# of Votes',
        data: [12, 19, 3, 5, 2, 3],
        backgroundColor: [
          'rgba(255, 99, 132, 0.2)',
          'rgba(54, 162, 235, 0.2)',
          'rgba(255, 206, 86, 0.2)',
          'rgba(75, 192, 192, 0.2)',
          'rgba(153, 102, 255, 0.2)',
          'rgba(255, 159, 64, 0.2)'
        ],
        borderColor: [
          'rgba(255,99,132,1)',
          'rgba(54, 162, 235, 1)',
          'rgba(255, 206, 86, 1)',
          'rgba(75, 192, 192, 1)',
          'rgba(153, 102, 255, 1)',
          'rgba(255, 159, 64, 1)'
        ],
        borderWidth: 1
      }]
    },
    options: {
      scales: {
        yAxes: [{
          ticks: {
            beginAtZero:true
          }
        }]
      }
    }
  })

http://localhost:3000/small_steps/indexにアクセスすると↓

グラフが描画された!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です