[Rails] Chart.js에서 커피의 맛을 시각화
구현하는 것
커피의 맛 데이터를 Taist 테이블에 저장합니다.
Taist 테이블의 「refresh,bitter,body,fruity」의 4개의 컬럼 데이터를 Chart.js를 사용해 렌더링 합니다.
rails 변수는 "gon"이라는 Gem을 사용하여 javascript 내에서도 사용됩니다.
Taist 테이블 정의
열 이름
컬럼 설명
데이터 유형
기본
ID
맛 ID
integer
title
제목
문자열
refresh
깨끗이
integer
bitter
비터
integer
body
코쿠
integer
fruity
과일
integer
created_at
등록일
datetime
NOW
updated_at
갱신일
부울
NOW
완성형 이미지
Gem에 추가
Gemfile.
gem 'gon'
$ bundle install
Chart.js 로드
Chart.js를 사용하려면 CDN에 게시된 js 파일을 application.html.erb의 head에서 로드합니다.
app/views/layouts/application.html
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.js"></script>
</head>
Chart.js 보기
taists.controller.rb
Taist 테이블의 「refresh,bitter,body,fruity」의 4개의 컬럼 데이터를 가지는 레코드를 gon를 사용한 변수에 대입합니다.
전제로 커피의 맛에 따라 "refresh,bitter,body,fruity"에 들어가는 데이터는 다르다고 합니다.
app/controllers/taists_controller.rb
def show
@taist = Taist.find(params[:id])
#railsの変数をchart.jsに渡す
gon.taist = @taist
end
taists/show.html.erb
그래프 그리기 영역을 지정하기 위해 캔버스 요소를 사용합니다.
app/views/taists/show.html
<canvas id="showRaderChart"></canvas>
javascripts/application.js
· 방금 설정한 캔버스 요소(ID: showRaderChart)를 가져와 변수 ctx에 할당합니다.
·
var taist = gon.taist
에서 rails의 변수를 gon을 사용하여 javascript 내에서도 사용합니다.・
type: 'radar'
그리고 그려지는 그래프의 종류를 레이더 차트로 하고 있습니다.app/assets/javascripts/application.js
var ctx = document.getElementById("showRaderChart");
var taist = gon.taist
var showRadarChart = new Chart(ctx, {
type: 'radar',
data: {
labels: ["スッキリ", "ビター", "コク", "フルーティ"],
datasets: [{
label: taist.title,
data: [taist.refresh, taist.bitter, taist.body, taist.fruity],
backgroundColor: 'RGBA(135, 206, 235, 0.5)',
borderColor: 'RGBA(65, 105, 225, 1)',
borderWidth: 1,
pointBackgroundColor: 'RGB(46,106,177)'
}]
},
options: {
title: {
display: true,
text: ''
},
scale:{
ticks:{
suggestedMin: 0,
suggestedMax: 3,
stepSize: 1,
callback: function(value, index, values){
if(value == 1){
return "やや感じる"
}else if(value == 2){
return "感じる"
}else{
return "強く感じる"
}
}
}
}
}
});
차트에 표시되는 항목이지만,
suggestedMin: 0
에서 최소를 0, suggestedMax: 3
에서 최대를 3으로,이 값이
value == 1
그렇다면 "약간 느낀다"라고 표시, 2라면 "느끼다", 3이라면 "강하게 느낀다"라고 표시하도록 하고 있습니다.application.js
scale:{
ticks:{
suggestedMin: 0,
suggestedMax: 3,
stepSize: 1,
callback: function(value, index, values){
if(value == 1){
return "やや感じる"
}else if(value == 2){
return "感じる"
}else{
return "強く感じる"
}
}
}
}
마지막으로
끝까지 봐 주셔서 감사합니다.
초학자이므로 잘못되었거나 이해하기 어려운 부분도 있을까 생각합니다.
뭔가 눈치채는 점이 있으면, 부담없이 코멘트 받을 수 있으면 다행입니다.
트위터 : htps : // 라고 해서 r. 이 m / y와 _ 오ct
참고 : htps : //에서. 이 m / y와 _ 오
참고
공식 문서
h tp // w w. 찬 rtjs. rg/
Chart.js에서 그래프를 그려 보았습니다.
htps : // 코 m / 하루카 - 오가와 /
gon을 사용한 Rails와 Javascript의 연계에 대해
htps : // 이 m/s_나카무라/있어 ms/5d153f7d9db1b1190296
Reference
이 문제에 관하여([Rails] Chart.js에서 커피의 맛을 시각화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuto_1014/items/2903007c0206a57e253a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)