質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1134閲覧

chartkickでeach文で取り出した値をまとめてグラフにしたい

ikedayuuki

総合スコア24

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/11/01 03:29

前提・実現したいこと

現在、railsにてカレンダーのアプリを作成しているのですが、
each文で取り出した値をまとめてchartkickのtimelineのグラフにしたいのですが、どうすればいいかわかりません。

何卒、よろしくお願いいたします

該当のソースコード

index.html.erb

html

1<div class="text text03"> 2<%= calendar number_of_days: 1, events: @attendances do |date, attendances| %> 3<%= link_to daytimes_url, class: "navbar-item" do %> 4 <div class="title is-5"> <%= date.day %></div> 5 <% end %> 6 7 <% attendances.each do |attendance| %> 8 <div> 9 <%= link_to attendance.user.username, attendance %> 10 <%= link_to attendance.start_time.strftime("%Y-%m-%d %H:%M"), attendance %> 11 <%= link_to attendance.last_time.strftime("%Y-%m-%d %H:%M"), attendance %> 12 <%= timeline [ 13 [attendance.user.username, attendance.start_time, attendance.last_time] 14] %> 15 </div> 16 <% end %>

routes.rb

ruby

1Rails.application.routes.draw do 2 get 'searches',to: "searches#index" 3 mount RailsAdmin::Engine => '/admin', as: 'rails_admin' 4 devise_for :users, controllers: { 5 omniauth_callbacks: 'users/omniauth_callbacks', 6 registrations: 'users/registrations' 7 } 8 post '/callback' => 'linebot#callback' 9 get 'homes/index' 10 resources :homes, only: [:index] 11 root to: 'home#index' 12 resources :users 13 resources :attendances 14 resources :daytimes 15 resources :restaurants, only: [:index, :show] 16 resources :searches do 17 collection do 18 get 'search' 19 end 20 end 21 namespace :admin do 22 resources :restaurants, only: [:index, :new, :create, :show, :edit, :destroy] 23 end 24end 25 26

attendances_controller.rb

ruby

1class AttendancesController < ApplicationController 2 before_action :authenticate_user!, except: [:index] 3 4 def index 5 @attendances = Attendance.all 6 end 7 8 9 def new 10 @attendance = Attendance.new 11 end 12 13 def show 14 @attendance = Attendance.find(params[:id]) 15 end 16 17 def create 18 @attendance = Attendance.new(attendance_params) 19 @attendance.user_id = current_user.id 20 @attendance.save 21 redirect_to attendances_path(@attendance) 22 end 23 24 def destroy 25 @attendance = Attendance.find(params[:id]) 26 if @attendance.user != current_user 27 redirect_to attendances_path, alert: "不正なアクセスです" 28 else 29 @attendance.destroy 30 redirect_to attendances_path, notice:"削除しました" 31 end 32 end 33 34 def edit 35 @attendance = Attendance.find(params[:id]) 36 if @attendance.user != current_user 37 redirect_to attendances_path, alert: "不正なアクセスです" 38 end 39 40 end 41 42 def update 43 @attendance = Attendance.find(params[:id]) 44 if @attendance.update(attendance_params) 45 redirect_to attendances_path(@attendance), notice: "更新しました" 46 else 47 render 'edit' 48 end 49 end 50 51 private 52 53 def attendance_params 54 params.require(:attendance).permit(:title, :content, :start_time, :last_time, :username) 55 56 end 57 58end 59

attendance.js

js

1document.addEventListener("turbolinks:load" 2,function() { 3 $('[name="btn"]:radio').change( function() { 4 if($('[id=a]').prop('checked')){ 5 $('.text').fadeOut(); 6 $('.text01').fadeIn(); 7 } else if ($('[id=b]').prop('checked')) { 8 $('.text').fadeOut(); 9 $('.text02').fadeIn(); 10 } else if ($('[id=c]').prop('checked')) { 11 $('.text').fadeOut(); 12 $('.text03').fadeIn(); 13 } 14 }); 15});

試したこと

eachの中でグラフを記述すると、別々にグラフが作成され、eachの外で記述すると、別の値も全て取ってきてしまします。

補足情報(FW/ツールのバージョンなど)

ruby '2.6.5'
gem 'simple_calendar', '~> 2.0'
gem "chartkick"
gem 'jquery-rails'

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2020/11/01 11:09

どこのeachで、ですか? なにと何の項目が必要なのですか?
ikedayuuki

2020/11/01 11:34

index.html.erbの <% attendances.each do |attendance| %>です。 [attendance.user.username, attendance.start_time, attendance.last_time]の3つの項目を取得したいです
guest

回答1

0

ベストアンサー

attendances.each 内ではやりにくいですね。
その外で
attendances.map{|attendance| [attendance.user.username, attendance.start_time, attendance.last_time] }

で作ってください。
好みとしては controllerで作って渡したいが。。。

投稿2020/11/01 11:39

winterboum

総合スコア23395

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikedayuuki

2020/11/01 13:00

attendances.eachの外で記述したら無事行けました。 助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問