はじめに
オリジナルアプリの作成にて、投稿に連動したグラフを作成したので作成方法をアウトプット!
導入方法
1:chart.jsをCDN経由でRailsアプリに導入
2:グラフ生成のコード記述
3:すこーしコード書き換えて投稿と連動させる
そもそもCDNってなに?
CDN(Content Delivery Network)の略で、
ウェブコンテンツを効率的かつスピーディーに配信できるように工夫されたネットワークのことのようです。
これによってオリジンサーバーの負担を減らせるみたい。
感覚的には、アマゾンの倉庫をいろいろな場所に設けて、(東京の人は東京の倉庫から出荷!、大阪の人は大阪の倉庫から出荷!みたいな感じで)負担を減らそう!ってことで理解してます。
では、本題、、、
1:chart.jsをCDN経由でRailsアプリに導入
以下のリンクからCDNを作成!
https://www.jsdelivr.com/package/npm/chart.js?version=2.8.0
view > layouts > application.html.erbのheadタグにscriptを記述
<!DOCTYPE html>
<html>
<head>
<title>Nutrik</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<script type="text/javascript" src="https://js.pay.jp/v1/"></script>
<%= stylesheet_link_tag 'application', media: 'all'%>
<%= javascript_pack_tag 'application' %>
<script src=”ここに貼り付ける!!!”></script>
</head>
<body>
<%= yield %>
</body>
</html>
2:グラフ生成のコード記述
<div class="chart">
<canvas id="myChart" ></canvas>
<script>
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'radar',
data: {
labels: ["1群", "2群", "3群", "4群", "5群", "6群"],
datasets:
[
{
label: '6つの基礎食品群',
backgroundColor: 'rgba(255,165,0,0.5)',
borderColor: 'rgba(255,165,0,0.2)',
data: [1,2,3,4,5,6]
},
]
},
options: {
maintainAspectRatio: false,
scale: {
ticks: {
suggestedMin: 0,
suggestedMax: 7
}
}
}
});
</script>
</div>
そしたらこんな感じのグラブができます!
3:すこーしコード書き換えて投稿と連動させる
こんな感じでコードを少し書き換えてあげる。
data: [1,2,3,4,5,6]
data: [<%= @food_group[1] %>, <%= @food_group[2] %>, <%= @food_group[3] %>, <%= @food_group[4] %>, <%= @food_group[5]%>, <%= @food_group[6] %>]
私の場合、持ってきたいデータが特殊だったので、少しコントローラーで加工して、インスタンス変数でビューに渡しています。
##終わりに
結果、すごく簡単にグラフが作れる!!
参考記事