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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

816閲覧

指定したグラフのデータだけを表示したい。

sh11821783

総合スコア0

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/06/11 23:21

編集2021/06/12 07:53

ruby(ruby on rails)で家計簿システムを作っています。
各ページ毎(固定費ページ、変動費ページ、収入ページ)の各月毎に各項目(電気代や水道代)のグラフを実装中なのですが、それぞれ固定費の項目、変動費の項目、収入の「項目のデータを絞って、グラフにすることができません。

現状の画像(id等グラフにする必要のないものまで、拾ってしまいます。)

![エラーメッセージ```]

controller

class UsersController < ApplicationController before_action :set_user, only: [:show, :show_1, :show_2, :edit, :update, :destroy, :edit_basic_info, :update_basic_info] before_action :logged_in_user, only: [:index, :edit, :update, :destroy, :edit_basic_info, :update_basic_info] before_action :correct_user, only: [:edit, :update] before_action :admin_user, only: [:destroy, :edit_basic_info, :update_basic_info] before_action :set_one_month, only: [:show, :show_1, :show_2] def index @users = User.paginate(page: params[:page]).search(params[:search]) end # 固定費画面 def show if params["select_year(1i)"].present? && params["select_month(2i)"].present? #&& params["select_month(3i)"].present? # パラメーターで2020(1i)-06(2i)-01(3i)というスタイルで表示されていたので、コードもそれに合わせてやる。 select_day = params["select_year(1i)"] + "-" + # パラメーター上では、月日は「6」や「1」というふうに出ていたので上記のスタイルに合わせて比較させるので以下のよいうにフォーマットを合わせている。 format("%02d", params["select_month(2i)"]) + "-" + format("%02d", params["select_month(3i)"]) # @first_day = select_day.to_date.beginning_of_month # @last_day = @first_day.end_of_month # @household_account_books = @user.household_account_books.where(worked_on: @first_day..@last_day).order(:worked_on) params[:date] = select_day.to_date.beginning_of_month set_one_month end @household_account_book = @user.household_account_books.find_by(worked_on: @first_day) end # 変動費画面 def show_1 if params["select_year(1i)"].present? && params["select_month(2i)"].present? #&& params["select_month(3i)"].present? # パラメーターで2020(1i)-06(2i)-01(3i)というスタイルで表示されていたので、コードもそれに合わせてやる。 select_day = params["select_year(1i)"] + "-" + # パラメーター上では、月日は「6」や「1」というふうに出ていたので上記のスタイルに合わせて比較させるので以下のよいうにフォーマットを合わせている。 format("%02d", params["select_month(2i)"]) + "-" + format("%02d", params["select_month(3i)"]) # @first_day = select_day.to_date.beginning_of_month # @last_day = @first_day.end_of_month # @household_account_books = @user.household_account_books.where(worked_on: @first_day..@last_day).order(:worked_on) params[:date] = select_day.to_date.beginning_of_month set_one_month end @household_account_book = @user.household_account_books.find_by(worked_on: @first_day) end # 収入画面 def show_2 if params["select_year(1i)"].present? && params["select_month(2i)"].present? #&& params["select_month(3i)"].present? # パラメーターで2020(1i)-06(2i)-01(3i)というスタイルで表示されていたので、コードもそれに合わせてやる。 select_day = params["select_year(1i)"] + "-" + # パラメーター上では、月日は「6」や「1」というふうに出ていたので上記のスタイルに合わせて比較させるので以下のよいうにフォーマットを合わせている。 format("%02d", params["select_month(2i)"]) + "-" + format("%02d", params["select_month(3i)"]) # @first_day = select_day.to_date.beginning_of_month # @last_day = @first_day.end_of_month # @household_account_books = @user.household_account_books.where(worked_on: @first_day..@last_day).order(:worked_on) params[:date] = select_day.to_date.beginning_of_month set_one_month end @household_account_book = @user.household_account_books.find_by(worked_on: @first_day) end def new @user = User.new end def create @user = User.new(user_params) if @user.save log_in @user flash[:success] = '新規作成に成功しました。' redirect_to @user else render :new end end def edit end def update if @user.update_attributes(user_params) flash[:success] = "ユーザー情報を更新しました。" redirect_to @user else render :edit end end def destroy @user.destroy flash[:success] = "#{@user.name}のデータを削除しました。" redirect_to users_url end def edit_basic_info end def update_basic_info if @user.update_attributes(basic_info_params) flash[:success] = "#{@user.name}の基本情報を更新しました。" else flash[:danger] = "#{@user.name}の更新は失敗しました。<br>" + @user.errors.full_messages.join("<br>") end redirect_to users_url end private def user_params params.require(:user).permit(:name, :email, :phone_number, :password, :password_confirmation) end def basic_info_params params.require(:user).permit(:email, :phone_number, :password, :password_confirmation) end # beforフィルター # paramsハッシュからユーザーを取得します。 def set_user @user = User.find(params[:id]) end # ログイン済みのユーザーか確認します。 def logged_in_user unless logged_in? store_location flash[:danger] = "ログインしてください。" redirect_to login_url end end # アクセスしたユーザーが現在ログインしているユーザーか確認します。 def correct_user redirect_to(root_url) unless current_user?(@user) end # システム管理権限所有かどうか判定します。 def admin_user redirect_to root_url unless current_user.admin? end end

該当のソースコード(html)

<div> <table class="table table-bordered table-condensed user-table"> <tr> <td>名前:<%= @user.name %></td> </tr> </table> </div> <h1>【固定費一覧表】</h1> <div> <table class="table table-bordered table-condensed" id="table-attendances"> <tr> <td> <%= l(Date.today, format: :long) %> </td> </tr> <table> </div> <div> <% @household_account_books.each do |h| %> <% @all_total_income = @all_total_income.to_i + h.income_n.to_i + h.income_n_1.to_i + h.income_n_2.to_i + h.income_n_3.to_i + h.income_n_4.to_i + h.income_n_5.to_i + h.income_n_6.to_i + h.income_n_7.to_i + h.income_n_8.to_i + h.income_n_9.to_i + h.income_n_10.to_i %> <% @all_total_cost = @all_total_cost.to_i + h.fixed_n.to_i + h.fixed_n_1.to_i + h.fixed_n_2.to_i + h.fixed_n_3.to_i + h.fixed_n_4.to_i + h.fixed_n_5.to_i + h.fixed_n_6.to_i + h.fixed_n_7.to_i + h.fixed_n_8.to_i + h.fixed_n_9.to_i + h.fixed_n_10.to_i + h.fixed_n_11.to_i + h.fixed_n_12.to_i + h.fixed_n_13.to_i + h.fixed_n_14.to_i + h.fixed_n_15.to_i %> <% @all_total_cost_1 = @all_total_cost_1.to_i + h.variable_n.to_i + h.variable_n_1.to_i + h.variable_n_2.to_i + h.variable_n_3.to_i + h.variable_n_4.to_i + h.variable_n_5.to_i + h.variable_n_6.to_i + h.variable_n_7.to_i + h.variable_n_8.to_i + h.variable_n_9.to_i + h.income_n_10.to_i %> <% end %>     ↓グラフのコードです <%= pie_chart @household_account_book %> <table class="table table-bordered table-condensed" id="table-attendances"> <tr> <th>収入</th> <th>支出(固定費 + 変動費)</th> <th>収支合計</th> </tr> <tr> <td><%= "#{@all_total_income.to_s(:delimited)}円" %></td> <td><%= "#{(@all_total_cost + @all_total_cost_1).to_s(:delimited)}円" "(#{@all_total_cost.to_s(:delimited)}円 + #{@all_total_cost_1.to_s(:delimited)}円)" %></td> <td><%= "#{(@all_total_income.to_i - (@all_total_cost + @all_total_cost_1).to_i).to_s(:delimited)}円" %></td> </tr> <table> </div> <div class="center"> <%= form_with(url: user_path(@user), method: :get, local: true) do |f| %> <%= f.date_select :select_year, {:discard_day => true, :discard_month => true, :use_month_numbers => true}, class: "form-control bootstrap-date" %> <%= f.date_select :select_month, {:discard_day => true, :discard_year => true, :use_month_numbers => true}, class: "form-control bootstrap-date" %> <button class="btn btn-primary"> 検索 </button><br><br> <% end %> </div> <div class="center"> <%= link_to "⇦ 前月へ", user_path(date: @first_day.prev_month), class: "btn btn-info" %> <%= link_to "1ヶ月の家計簿編集へ", household_account_books_edit_one_month_user_path(date: @first_day), class: "btn btn-success" %> <%= link_to "次月へ ⇨", user_path(date: @first_day.next_month), class: "btn btn-info" %> </div> 、 、 、 <tr> <td><%= "支出合計(固定)" %></td> <% @all_total_cost = @total_cost.to_i + @total_cost_1.to_i + @total_cost_2.to_i + @total_cost_3.to_i + @total_cost_4.to_i + @total_cost_5.to_i + @total_cost_6.to_i + @total_cost_7.to_i + @total_cost_8.to_i + @total_cost_9.to_i + @total_cost_10.to_i + @total_cost_11.to_i + @total_cost_12.to_i + @total_cost_13.to_i + @total_cost_14.to_i + @total_cost_15.to_i %> <td><%= "#{@all_total_cost.to_s(:delimited)}円" %></td> </tr> </tfoot> </table> </div>

試したこと

.group_by_dayを利用しようとしましたが、グループの指定の仕方が破るのだと思いますが、group_by_dayにエラーが発生します。
また、ネットの参考資料の中に、『@materials.group_by_day { |u| u.updated_at }.sum(:current_stock) 』
というコードがあり、eachするときの容量で欲しいデータあだけ抽出しようとしましたが、上手くいきません。

一週間以上悩んでいるのですが、解決できませんおで、ご指導の程よろしくお願い致します。

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

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

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

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

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

sh11821783

2021/06/12 07:40

お返事有難うございます! html controller一部ではなく、全部載せますね!
sh11821783

2021/06/12 07:50

code出来るだけのさせて頂きました。 文字数の関係で全部は載せれませんでした。 よろしくお願い致します。
guest

回答1

0

自己解決

以下で解決いたしました。
コントローラでは、月のデータを撮るために、userにhoucehold_account_bookに紐付けたコードを書いて、vueファイルでは、配列でデータを取得。完成に至りました。

<% hash = {} %> <% if @household_account_book.fixed_cost.present? %> <% hash["#{@household_account_book.fixed_cost}"] = @total_cost %> <% end %> <% if @household_account_book.fixed_cost_1.present? %> <% hash["#{@household_account_book.fixed_cost_1}"] = @total_cost_1 %> <% end %> <% if @household_account_book.fixed_cost_2.present? %> <% hash["#{@household_account_book.fixed_cost_2}"] = @total_cost_2 %> <% end %> <% if @household_account_book.fixed_cost_3.present? %> <% hash["#{@household_account_book.fixed_cost_3}"] = @total_cost_3 %> <% end %> <% if @household_account_book.fixed_cost_4.present? %> <% hash["#{@household_account_book.fixed_cost_4}"] = @total_cost_4 %> <% end %> <% if @household_account_book.fixed_cost_5.present? %> <% hash["#{@household_account_book.fixed_cost_5}"] = @total_cost_5 %> <% end %> <% if @household_account_book.fixed_cost_6.present? %> <% hash["#{@household_account_book.fixed_cost_6}"] = @total_cost_6 %> <% end %> <% if @household_account_book.fixed_cost_7.present? %> <% hash["#{@household_account_book.fixed_cost_7}"] = @total_cost_7 %> <% end %> <% if @household_account_book.fixed_cost_8.present? %> <% hash["#{@household_account_book.fixed_cost_8}"] = @total_cost_8 %> <% end %> <% if @household_account_book.fixed_cost_9.present? %> <% hash["#{@household_account_book.fixed_cost_9}"] = @total_cost_9 %> <% end %> <% if @household_account_book.fixed_cost_10.present? %> <% hash["#{@household_account_book.fixed_cost_10}"] = @total_cost_10 %> <% end %> <% if @household_account_book.fixed_cost_11.present? %> <% hash["#{@household_account_book.fixed_cost_11}"] = @total_cost_11 %> <% end %> <% if @household_account_book.fixed_cost_12.present? %> <% hash["#{@household_account_book.fixed_cost_12}"] = @total_cost_12 %> <% end %> <% if @household_account_book.fixed_cost_13.present? %> <% hash["#{@household_account_book.fixed_cost_13}"] = @total_cost_13 %> <% end %> <% if @household_account_book.fixed_cost_14.present? %> <% hash["#{@household_account_book.fixed_cost_14}"] = @total_cost_14 %> <% end %> <% if @household_account_book.fixed_cost_15.present? %> <% hash["#{@household_account_book.fixed_cost_15}"] = @total_cost_15 %> <% end %> <% if @household_account_book.fixed_cost.present? %> <%= pie_chart hash %> <% end %>

投稿2021/06/13 02:11

sh11821783

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問