質問編集履歴

3

書き直し

2019/10/01 11:41

投稿

sugawa
sugawa

スコア24

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,234 @@
1
+ 今、勤怠管理アプリを作っていて「打刻」をどうやって実現しようかと悩んでいます。
2
+
3
+
4
+
5
+ やってみたこと
6
+
7
+ →show.html.erbにおいて、form_tagを使って送信する方法を参考にして使ってみました。
8
+
9
+ 特に、submit_tagの情報が少なくて例がどのような内容になっているのか把握できずに困っています。
10
+
11
+ show.html.erb
12
+
13
+ ```ruby
14
+
15
+ <% form_tag('/timecard', remote: true, id: 'timecard-form') do |f| %>
16
+
17
+ <%= submit_tag('出社', name: 'in', id: 'in', disabled: !!@time_card.in_at, class: 'btn btn-default') %>
18
+
1
- 今、勤怠管理アプリを作成していて、打刻のために「出勤」と「退勤」ボタンを用意しておき、押された時間を記録して表に記入できる様にしたいと思います。ボタンを押すだけで時間を取得し表に打刻までがワンセットです。その間にフォームの入力などの煩わしい作業は無いようにしたいと思っています。また1度押したら次の日まで押せないようにして2度押し防止もやりたいです。
19
+ <%= submit_tag('退社', name: 'out', id: 'out', disabled: !@time_card.in_at || !!@time_card.out_at, class: 'btn btn-default') %>
20
+
2
-
21
+ <% end %>
22
+
23
+ ```
24
+
25
+ →rootを下のように```post '/timecard/create', to: 'time_cards#create'```
26
+
27
+ として、POSTをしようとしています。
28
+
29
+ ```ruby
30
+
31
+ Rails.application.routes.draw do
32
+
33
+ get '/timecard', to: 'time_cards#show'
34
+
35
+ post '/timecard/create', to: 'time_cards#create'
36
+
37
+ get '/monthly', to: 'time_cards#index'
38
+
39
+ end
40
+
41
+
42
+
43
+ ```
44
+
45
+ →controllerを下のように設定してViewにインスタンス変数で受け渡しをしています。
46
+
47
+ ```ruby
48
+
49
+ if params[:in]
50
+
51
+ @time_card.in_at = Time.now
52
+
53
+ elsif params[:out]
54
+
55
+ @time_card.out_at = Time.now
56
+
57
+ end
58
+
59
+ ```
60
+
61
+ →最終的な表への打刻は以下のように引っ張って来ようと思っています。
62
+
63
+
64
+
65
+ ```ruby
66
+
67
+ <div class="container">
68
+
69
+ <h1><%= @year_name %>年<%= @month_name %>月の勤務表</h1>
70
+
71
+ <table class="table">
72
+
73
+ <thead>
74
+
75
+ <tr>
76
+
77
+ <th>日付</th>
78
+
79
+ <th>曜</th>
80
+
81
+ <th>出社時間</th>
82
+
83
+ <th>退社時間</th>
84
+
85
+ <th>勤務時間</th>
86
+
87
+ </tr>
88
+
89
+ </thead>
90
+
91
+ <%(Date.parse("#{@start_date}")..Date.parse("#{@end_date}")).each do |date| %>
92
+
93
+ <tr>
94
+
95
+ <td><%="#{date.month}月#{date.day}日"%></td>
96
+
97
+ <td><%= %w[日 月 火 水 木 金 土][date.wday] %></td>
98
+
99
+ <td><%=@time_card.in_at%></td>
100
+
101
+ <td><%=@time_card.out_at%></td>
102
+
103
+ <td></td>
104
+
105
+ </tr>
106
+
107
+ <%end%>
108
+
109
+ </table>
110
+
111
+ </div>
112
+
113
+ ```
114
+
115
+
116
+
117
+ ```ruby
118
+
119
+ <div class="container">
120
+
121
+ <h1><%= @year_name %>年<%= @month_name %>月の勤務表</h1>
122
+
123
+ <table class="table">
124
+
125
+ <thead>
126
+
127
+ <tr>
128
+
129
+ <th>日付</th>
130
+
131
+ <th>曜</th>
132
+
133
+ <th>出社時間</th>
134
+
135
+ <th>退社時間</th>
136
+
137
+ <th>勤務時間</th>
138
+
139
+ </tr>
140
+
141
+ </thead>
142
+
143
+ <%(Date.parse("#{@start_date}")..Date.parse("#{@end_date}")).each do |date| %>
144
+
145
+ <tr>
146
+
147
+ <td><%="#{date.month}月#{date.day}日"%></td>
148
+
149
+ <td><%= %w[日 月 火 水 木 金 土][date.wday] %></td>
150
+
151
+ <td></td>
152
+
153
+ <td></td>
154
+
155
+ <td></td>
156
+
157
+ </tr>
158
+
159
+ <%end%>
160
+
161
+ </table>
162
+
163
+ </div>
164
+
165
+
166
+
167
+
168
+
169
+ ```
170
+
171
+ ```ruby
172
+
173
+ class TimeCardsController < ApplicationController
174
+
175
+ def index
176
+
177
+ #月初と月末を求る
178
+
179
+ require 'date'
180
+
181
+ day = Date.today
182
+
183
+ start_date = Date::new(day.year,day.month, 1)
184
+
185
+ end_date = start_date >> 1
186
+
187
+ end_date = end_date - 1
188
+
189
+ @start_date = start_date
190
+
191
+ @end_date = end_date
192
+
3
- ・時間の取得
193
+ #今何年の取得
194
+
4
-
195
+ year_name = start_date.year
196
+
197
+ @year_name = year_name
198
+
5
- ・時間表への表示
199
+ #今何月取得
200
+
6
-
201
+ month_name = start_date.month
202
+
203
+ @month_name = month_name
204
+
205
+ end
206
+
207
+
208
+
7
- ・2度押し防止
209
+ def show
210
+
211
+
212
+
8
-
213
+ end
214
+
215
+
216
+
217
+ def create
218
+
219
+
220
+
221
+ end
222
+
223
+
224
+
225
+ end
226
+
227
+
228
+
229
+ ```
230
+
9
- を悩んでいます。どうかお力をお貸くださ。よろしくお願いいたします。
231
+ 以下の写真が実現イメージです。
10
232
 
11
233
  ![イメージ説明](abfb9f188f5626373decab0c3b0d561f.png)
12
234
 
@@ -16,125 +238,13 @@
16
238
 
17
239
  ![イメージ説明](09856382963da20baeacfbec2a21830f.png)
18
240
 
19
- ```ruby
241
+
20
-
21
- <div class="container">
242
+
22
-
23
- <h1><%= @year_name %>年<%= @month_name %>月の勤務表</h1>
24
-
25
- <table class="table">
26
-
27
- <thead>
28
-
29
- <tr>
30
-
31
- <th>日付</th>
32
-
33
- <th>曜</th>
34
-
35
- <th>出社時間</th>
36
-
37
- <th>退社時間</th>
38
-
39
- <th>勤務時間</th>
40
-
41
- </tr>
42
-
43
- </thead>
44
-
45
- <%(Date.parse("#{@start_date}")..Date.parse("#{@end_date}")).each do |date| %>
46
-
47
- <tr>
48
-
49
- <td><%="#{date.month}月#{date.day}日"%></td>
50
-
51
- <td><%= %w[日 月 火 水 木 金 土][date.wday] %></td>
52
-
53
- <td></td>
54
-
55
- <td></td>
56
-
57
- <td></td>
58
-
59
- </tr>
60
-
61
- <%end%>
62
-
63
- </table>
64
-
65
- </div>
66
-
67
-
68
-
69
-
70
-
71
- ```
72
-
73
- ```ruby
74
-
75
- class TimeCardsController < ApplicationController
76
-
77
- def index
78
-
79
- #月初と月末を求る
80
-
81
- require 'date'
82
-
83
- day = Date.today
84
-
85
- start_date = Date::new(day.year,day.month, 1)
86
-
87
- end_date = start_date >> 1
243
+ 力不足で恐縮ですがお知恵をお貸し下さい。よろしくお願いします。
88
-
89
- end_date = end_date - 1
244
+
90
-
91
- @start_date = start_date
245
+
92
-
93
- @end_date = end_date
246
+
94
-
95
- #今何年の取得
247
+
96
-
97
- year_name = start_date.year
98
-
99
- @year_name = year_name
100
-
101
- #今何月の取得
102
-
103
- month_name = start_date.month
104
-
105
- @month_name = month_name
106
-
107
- end
108
-
109
-
110
-
111
- def show
112
-
113
-
114
-
115
- end
116
-
117
-
118
-
119
- def create
120
-
121
-
122
-
123
- end
124
-
125
-
126
-
127
- end
128
-
129
-
130
-
131
-
132
-
133
- ```
134
-
135
- 現状
136
-
137
- ![イメージ説明](cac07b4377c0c9526122f49833ec8875.png)
138
248
 
139
249
 
140
250
 

2

抜け字

2019/10/01 11:41

投稿

sugawa
sugawa

スコア24

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 今、勤怠管理アプリを作成していて、打刻のために「出勤」と「退勤」ボタンを用意しておき、押された時間を記録して表に記入できる様にしたいと思います。ボタンを押すだけで時間を取得し表に打刻までがワンセットです。その間にフォームの入力などの煩わしい作業は無いようにしたいと思っています。また1度押したら次の日まで押せないようにして2度押し防止やりたいです。
1
+ 今、勤怠管理アプリを作成していて、打刻のために「出勤」と「退勤」ボタンを用意しておき、押された時間を記録して表に記入できる様にしたいと思います。ボタンを押すだけで時間を取得し表に打刻までがワンセットです。その間にフォームの入力などの煩わしい作業は無いようにしたいと思っています。また1度押したら次の日まで押せないようにして2度押し防止やりたいです。
2
2
 
3
3
  ・時間の取得
4
4
 

1

誤字

2019/09/29 22:06

投稿

sugawa
sugawa

スコア24

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 今、勤怠管理アプリを作成していて、打刻のために「出勤」と「退勤」ボタンを用意しておき、押された時間を記録して表に記入できる様にしたいといます。ボタンを押すだけで時間を取得し表に打刻までがワンセットです。その間にフォームの入力などの煩わしい作業は無いようにしたいと思っています。また1度押したら次の日まで押せないようにして2度押し防止やりたいです。
1
+ 今、勤怠管理アプリを作成していて、打刻のために「出勤」と「退勤」ボタンを用意しておき、押された時間を記録して表に記入できる様にしたいといます。ボタンを押すだけで時間を取得し表に打刻までがワンセットです。その間にフォームの入力などの煩わしい作業は無いようにしたいと思っています。また1度押したら次の日まで押せないようにして2度押し防止やりたいです。
2
2
 
3
3
  ・時間の取得
4
4