前提・実現したいこと
railsでchart.jsの機能を実装しています。
配列で取得したidに、紐づいた名前のカラムを表示させたいと考えています
groupメソッドでidの取得しました。
その後に、idに紐づいた別テーブルのnameカラム取得したいと考えていますが、配列にnameカラムを紐づける機能が実装できずx軸がidだけの表示になってしまいます。何らかのアドバイスがあればご享受ください。
該当のソースコード
controller
class ProjectsController < ApplicationController def index @projects = Project.page(params[:page]).reverse_order #chart.js @user = Project.group(:user_id).pluck(:user_id) #取得したuser_idを元にUserテーブルのカラムを紐づけたい。 @data = Project.group(:user_id).pluck(:reducation_time) #Y軸のデータです。 end
viewページ
<!-- Graphs --> <canvas id="myChart" width="900" height="400"></canvas> <script> var ctx = document.getElementById("myChart").getContext('2d'); var myChart = new Chart(ctx, { type: 'bar', data: { labels: <%= @user.to_json.html_safe %>, datasets: [{ label: "削減総時間", data: <%= @data %>, backgroundColor: 'rgba(255, 99, 132, 1.0)', borderColor: 'rgba(255, 50, 132, 1.0)', fill: false }] }, options: { title: { display: true, text: "ユーザー別改善時間" } } }); </script>
schema
create_table "projects", force: :cascade do |t| t.integer "user_id", default: 0, null: false t.string "name", default: "", null: false t.text "content", null: false t.date "start_date", null: false t.date "finish_date", null: false t.integer "status", default: 0, null: false t.integer "reducation_time", null: false t.integer "total_amount", null: false t.integer "reducation_amount", default: 0, null: false t.integer "number_of_month", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "job_id" end create_table "users", force: :cascade do |t| t.string "family_name", default: "", null: false #このカラムを紐づけたい t.string "first_name", default: "", null: false t.string "image_id", default: "", null: false t.boolean "admin_status", default: false, null: false t.boolean "delete_status", default: false, null: false t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["email"], name: "index_users_on_email", unique: true t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true end
試したこと
whereメソッドなどを使用しましたが実装できませんでした。
補足情報(FW/ツールのバージョンなど)
バージョン:rails 5.2.4.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。