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

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

詳細はこちら
Ruby on Rails 5

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

Ruby

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

Q&A

解決済

1回答

2536閲覧

勤務実績表を作っています。一つのeach文に複数の要素を入れて回したいのですが出来ません。

sugawa

総合スコア24

Ruby on Rails 5

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

Ruby

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

0グッド

0クリップ

投稿2019/09/29 06:48

編集2019/09/29 07:12

###勤務実績表を作りたい

写真のような勤務実績表を作るためにプログラムを組んでいます.
日付、曜日、出社時間、退社時間、勤務時間を表に入れるには
配列を用意してeach文で1個ずつ取り出して<td><%= date %></td>
の様にしてループを回すものだと思っていますが、要素が例えば日付だけなら事足りますが、
他の要素も一緒にループにするにはやり方がわからず困り果て、今の所多分zipメソッドあたりを使うのではないかと思いネットの参考を例にコードを打ってみましたがなかなかうまく行かず表示したいデータが出ない事に困っています。どうかお力をお貸しください。よろしくお願いいたします。イメージ説明

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

イメージ説明

エラーメッセージ

該当のソースコード

VIEW

ruby

1<div class="container"> 2 <h1><%= @year_name %>年<%= @month_name %>月の勤務表</h1> 3<table class="table"> 4 <thead> 5 <tr> 6 <th>日付</th> 7 <th></th> 8 <th>出社時間</th> 9 <th>退社時間</th> 10 <th>勤務時間</th> 11 </tr> 12 </thead> 13 14 <%@date.zip(@youbi).each |date youbi| do %> 15 16 <tr> 17 <td><%= date %></td> 18 <td><%= youbi %></td> 19 <td></td> 20 <td></td> 21 <td></td> 22 </tr> 23<%end%> 24 25 </table> 26 27</div> 28end 29end

controller

ruby

1class TimeCardsController < ApplicationController 2 def index 3 require 'date' 4 5 day = Date.today 6 start_date = Date::new(day.year,day.month, 1) 7 end_date = start_date >> 1 8 end_date = end_date - 1 9 #今何月の取得 10 month_name = start_date.month 11 12 13 #今月の羅列 14 (Date.parse("#{start_date}")..Date.parse("#{end_date}")).each do |date| 15 youbi = %w(日 月 火 水 木 金 土)[date.wday] + '曜日' 16 17 @date = date.day 18 @youbi = youbi 19 20 end 21 end 22end 23 24

試したこと

日付表示だけできるようにしました
VIEW

ruby

1<div class="container"> 2 <h1><%= @year_name %>年<%= @month_name %>月の勤務表</h1> 3<table class="table"> 4 <thead> 5 <tr> 6 <th>日付</th> 7 <th></th> 8 <th>出社時間</th> 9 <th>退社時間</th> 10 <th>勤務時間</th> 11 </tr> 12 </thead> 13 14 <%=(Date.parse("#{@start_date}")..Date.parse("#{@end_date}")).each do |date| %> 15 16 <tr> 17 <td><%=date %></td> 18 <td></td> 19 <td></td> 20 <td></td> 21 <td></td> 22 </tr> 23<%end%> 24 25 </table> 26 27</div> 28

controller

ruby

1class TimeCardsController < ApplicationController 2 def index 3 #月初と月末を求る 4 require 'date' 5 day = Date.today 6 start_date = Date::new(day.year,day.month, 1) 7 end_date = start_date >> 1 8 end_date = end_date - 1 9 10 #今何年の取得 11 year_name = start_date.year 12 @year_name = year_name 13 #今何月の取得 14 month_name = start_date.month 15 @month_name = month_name 16 17 #今月の羅列 18 (Date.parse("#{start_date}")..Date.parse("#{end_date}")).each do |date| 19 @date = date 20 @start_date = start_date 21 @end_date = end_date 22 end 23 end 24 25 def show 26 27 end 28 29 def create 30 31 end 32 33end 34 35

イメージ説明

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

使っているツール
AWS cloud9

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

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

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

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

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

siruku6

2019/09/29 07:05 編集

問題は、エラーが解決できないことなのでしょうか? それとも、エラーを無くすことはできるけれど、表示したいデータが出ないことなのでしょうか? 文脈から後者だと推測できるのですが、明示しておいた方がいいと思います。
sugawa

2019/09/29 07:06

表示したいデータが出ないのに困っています。
guest

回答1

0

ベストアンサー

少々冗長ですが、曜日はこれで表示できそうです

<td><%= %w[日 月 火 水 木 金 土][date.wday] %></td>

出社時間などはまだ生成されていなさそうですので、それらのデータが揃ってから質問されるとよいと思います。

投稿2019/09/29 07:12

siruku6

総合スコア1382

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

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

sugawa

2019/09/29 07:13

早速やってみます!!
sugawa

2019/09/29 07:22 編集

わ=== できました!!! 本当にありがとうございます。
siruku6

2019/09/29 07:23

曜日を表示する処理は、helperメソッドと呼ばれるところに書き出せると、よりrailsらしくなると思います。 頑張ってみてください。
sugawa

2019/09/29 07:27

ありがとうございます! 試してみます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問