🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

920閲覧

Railsで定義した変数をJSのclickイベントで変更したい

Yohei04

総合スコア24

Ruby

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

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/12/12 05:18

編集2019/12/12 07:25

前提・実現したいこと

githubのcontributionsの部分を自作しております。

↓github

イメージ説明

↓自作

イメージ説明

発生している問題・エラーメッセージ

Railsで定義した変数をJSのclickイベントで変更したいのですがやり方がわかりません。 具体的には上の写真で、 前の年を押したら2018年に、次の年を押したら2020年に、 その下の1〜12のボタンを押したらその月になるようにしたいです。 (まだCSSを組んでおらず見にくく申し訳ありません) JSだけでならできるのですが、Githubのようにコミット数で(自分の場合は写真のカレンダー上にあるツイートから持ってきた学習時間数によって)その日の色を変えたいため、 RailsとJSのバックとフロントの変数の繋げ方がわからず行き詰まっております。

該当のソースコード

htmlerb

1<% today = Time.current %> 2<% thisYear = today.strftime("%Y") %> 3<% thisMonth = today.strftime("%m") %> 4<% thisDay = today.strftime("%d") %> 5<% weeks = ['日', '月', '火', '水', '木', '金', '土'] %> 6 7<%# 今月からmヶ月前 %> 8<% m = 0 %> 9<%# // 月の最初の日を取得 %> 10<% startDate = today.ago(m.month).beginning_of_month %> 11<%# // 月の最後の日を取得 %> 12<% endDate = today.ago(m.month).end_of_month %> 13<%# // 月の末日 %> 14<% endDayCount = endDate.strftime("%d")%> 15<%# // 月の最初の日の曜日を取得 %> 16<% startDay = startDate.wday %> 17<%# // 日にちのカウント %> 18<% dayCount = 0 %> 19 20 21<table> 22 <caption class="title">学習カレンダー</caption> 23 <button id="prev" type="button">前の年</button> 24 <caption class="year_month"><%= today.ago(m.month).strftime("%Y年%m月") %></caption> 25 <button id="next" type="button">次の年</button><br> 26 <% for i in 1..12 do%> 27 <button><%= i %></button> 28 <% end %> 29 <tr> 30 <% for j in 0..6 do %> 31 <th><%= weeks[j] %></th> 32 <% end %> 33 </tr> 34 35 <% for w in 0..5 do %> 36 <tr> 37 <% for d in 0..6 do %> 38 <% if (w == 0 && d < startDay.to_f) %> 39 <%# // 1行目で1日の曜日の前 %> 40 <td>0</td> 41 <% elsif (dayCount > endDayCount.to_f-1) %> 42 <%# // 末尾の日数を超えた %> 43 <td>0</td> 44 <% else %> 45 <td> 46 <p class="day"><%= startDate.since(dayCount.days).strftime("%-d日") %></p> 47 <p class="hours"> 48 <% sum = 0 %> 49 <% @posts.each do |post| %> 50 <% if post.created_at.strftime("%Y%m%d") == startDate.since(dayCount.days).strftime("%Y%m%d") %> 51 <% sum += post.hours.to_f %> 52 <% end %> 53 <% end %> 54 <%= sum.to_f %> 55 </p><span>時間</span> 56 </td> 57 <% dayCount += 1 %> 58 <% end %> 59 <% end %> 60 </tr> 61 <% end %> 62</table> 63

試したこと

gemのgonや<%== JSON.dump() %>などを使ってみたのですが上手くいきませんでした。
https://qiita.com/s_nakamura/items/5d153f7d9db1b1190296

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

プログラミング自体Progateなどを使って独学しているためコードの書き方ももおかしいかもしれません。
html.erbにベタ書きしているのも間違っているかもしれません。。
コードにおかしなところがあったら教えていただけると幸いです。

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

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

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

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

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

guest

回答1

0

JSだけでならできるのですが

これは,カレンダーの月or年をクリックしたらその月or年のカレンダーを表示するのはできる,ということで大丈夫でしょうか…?

色の付け方については,htmlerbの

<td> <p class="day"> 〜省略〜 </p><span>時間</span> </td>

の部分を

<% @posts.each do |post| %> <% if post.created_at.strftime("%Y%m%d") == startDate.since(dayCount.days).strftime("%Y%m%d") %> <% sum = post.hours.to_f %> <% else %> <% sum = 0 %> <% end %> <% if sum>10 %> <% color="red" %> <% eisif sum<=10 && sum>5 %> <% color="yellow" %> <% eise %> <% color="blue" %> <% end %> <td class=color> <p class="day"><%= startDate.since(dayCount.days).strftime("%-d日") %></p> <p class="hours"> <%= sum.to_f %> </p><span>時間</span> </td> <% end %>

というようにして,cssでclass="red",class="yellow",class="blue"の設定をしたらどうでしょうか?

投稿2019/12/20 16:23

k-810

総合スコア192

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問