質問編集履歴

1

最後の未解決についてコードの書き方

2021/06/06 13:33

投稿

papanchoi0523
papanchoi0523

スコア1

test CHANGED
File without changes
test CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
 
4
4
 
5
- ここに質問の内容を詳しく書いてください。
6
5
 
6
+
7
- railsでクイズアプリを作っています。どうしても解決しません
7
+ railsでクイズアプリを作っています。最初の2つ解決することが出来また。本当にありがとうござい
8
8
 
9
9
  - データベースからランダム取得している問題を、一度取得したものは表示しないようにしたい
10
10
 
11
- - 次の問題が表示されたら「問〇」〇の所を1ずつ増やしたい
12
11
 
12
+
13
- - 一問正解ごとに+2点にして、最後に合計点数を表示したい 
13
+ どうしてもこれだけがわかりません。
14
14
 
15
15
   
16
16
 
@@ -20,258 +20,40 @@
20
20
 
21
21
 
22
22
 
23
- - 問〇について、エラーはならないのですが、次の問題に行ってもずっと問2と表示します。
23
+ -教わった @drone_questions = DroneQuestion.where.not(id:表示したID)order("RANDOM()").first
24
24
 
25
- - 得点につい、何度正解しもずっと2点のま変わりません
25
+ を使っ
26
26
 
27
- - 一度表示した問題表示しな方法は検索しても全わかりませんでした。
27
+ 自己解決のソースコードの通り表示したIDparamsで受け取り@donesに入れ、以下のようにやってますがうまいきません。最後の壁と思ってがんばりたいす。少知恵を頂きいです
28
28
 
29
29
 
30
30
 
31
- ### 該当のソースコード
31
+ ### 予想のソースコード
32
32
 
33
- ```aplicationcontollor
33
+ ```homecontroller
34
34
 
35
- class ApplicationController < ActionController::Base
35
+ def overtest2
36
36
 
37
- def toi
37
+ @drone_questions = DroneQuestion.order("RANDOM()").first
38
38
 
39
- toi = Numeral.find(1)
39
+ if @dones != @drone_questions.id
40
40
 
41
- toi1 = toi.toi
41
+ @dones.push(@drone_questions.id)
42
42
 
43
- @toi = toi1 + 1
43
+ else
44
44
 
45
-
45
+ @drone_questions = DroneQuestion.where.not(id:@dones)order("RANDOM()").first
46
46
 
47
- end
47
+ end
48
-
49
- def toi2
50
-
51
- overtoi2 = 1
52
-
53
- @overtoi2 = overtoi2 + 1
54
-
55
- end
56
48
 
57
49
  end
58
50
 
59
51
  ```
60
52
 
61
- ```homecontroller
62
53
 
63
- class HomeController < ApplicationController
64
54
 
65
- before_action :exam, only: [:overtest2]
66
-
67
- before_action :onlytoi1, only: [:exam]
68
-
69
- before_action :overtoi2, only: [:overtest2]
55
+ 2つ解決したコードは自己解決の欄に書きましたが、これを追加してもうまくいかないので解決欄には書いておりません。
70
-
71
- def top
72
56
 
73
57
 
74
58
 
75
- end
76
-
77
-
78
-
79
- def exam
80
-
81
- @drone_questions = DroneQuestion.order("RANDOM()").first
82
-
83
-
84
-
85
- end
86
-
87
-
88
-
89
- def overtest2
90
-
91
- @choice1 = params[:choice1]
92
-
93
- @choice2 = params[:choice2]
94
-
95
- @choice3 = params[:choice3]
96
-
97
- @choice4 = params[:choice4]
98
-
99
- @answer = params[:answer]
100
-
101
-
102
-
103
- score = 0
104
-
105
-
106
-
107
- if @choice1 == @answer
108
-
109
- @right = "正解です!"
110
-
111
- @score = score + 2
112
-
113
- else
114
-
115
- @wrong = "間違いです。正解は、「#{@answer}」です。"
116
-
117
- end
118
-
119
- if @choice2 == @answer
120
-
121
- @right = "正解です!"
122
-
123
- @score = score + 2
124
-
125
- else
126
-
127
- @wrong = "間違いです。正解は、「#{@answer}」です。"
128
-
129
- end
130
-
131
- if @choice3 == @answer
132
-
133
- @right = "正解です!"
134
-
135
- @score = score + 2
136
-
137
- else
138
-
139
- @wrong = "間違いです。正解は、「#{@answer}」です。"
140
-
141
- end
142
-
143
- if @choice4 == @answer
144
-
145
- @right = "正解です!"
146
-
147
- @score = score + 2
148
-
149
- else
150
-
151
- @wrong = "間違いです。正解は、「#{@answer}」です。"
152
-
153
- end
154
-
155
-
156
-
157
- end
158
-
159
- def onlytoi1
160
-
161
- toi
162
-
163
- end
164
-
165
- def overtoi2
166
-
167
- toi2
168
-
169
- end
170
-
171
- end
172
-
173
- ```
174
-
175
- ```tophtmlerb
176
-
177
- <div class="main top-main">
178
-
179
- <div class="top-message">
180
-
181
- <h2>採点付き!ドローン検定腕試し!</h2>
182
-
183
- <p>合格ラインか試してください</p>
184
-
185
- </div>
186
-
187
- </div>
188
-
189
- <p class="message">ランダム出題にも答えられれば完璧です!</p>
190
-
191
- <div class="exambtn">
192
-
193
- <%= button_to "試験開始", {controller: "home", action: "exam"}, method: :get %>
194
-
195
- </div>
196
-
197
- ```
198
-
199
-
200
-
201
- ```examhtmlerb
59
+ どうか知恵をお貸しください。
202
-
203
- <h1><%= "問#{@toi}" %></h1>
204
-
205
- <%= @drone_questions.q %>
206
-
207
- <%= button_to @drone_questions.choice1 , "/home/overtest2", { method: :get, params: {choice1: @drone_questions.choice1, answer: @drone_questions.answer}} %>
208
-
209
- <%= button_to @drone_questions.choice2 , "/home/overtest2", { method: :get, params: {choice2: @drone_questions.choice2, answer: @drone_questions.answer}} %>
210
-
211
- <%= button_to @drone_questions.choice3 , "/home/overtest2", { method: :get, params: {choice3: @drone_questions.choice3, answer: @drone_questions.answer}} %>
212
-
213
- <%= button_to @drone_questions.choice4 , "/home/overtest2", { method: :get, params: {choice4: @drone_questions.choice4, answer: @drone_questions.answer}} %>
214
-
215
- ```
216
-
217
-
218
-
219
- ```overtest2htmlerb
220
-
221
- <% score = 0 %>
222
-
223
- <p>
224
-
225
- <% if @right %>
226
-
227
- <%= @right %>
228
-
229
- <br>
230
-
231
- <p>
232
-
233
- 現在の得点は<%= @score %>点です。
234
-
235
- </p>
236
-
237
- <% else %>
238
-
239
- <%= @wrong %>
240
-
241
- <% end %>
242
-
243
- </p>
244
-
245
-
246
-
247
- <h1><%= "問#{@overtoi2}" %></h1>
248
-
249
- <%= @drone_questions.q %>
250
-
251
- <%= button_to @drone_questions.choice1 , "/home/overtest2", { method: :get, params: {choice1: @drone_questions.choice1, answer: @drone_questions.answer}} %>
252
-
253
- <%= button_to @drone_questions.choice2 , "/home/overtest2", { method: :get, params: {choice2: @drone_questions.choice2, answer: @drone_questions.answer}} %>
254
-
255
- <%= button_to @drone_questions.choice3 , "/home/overtest2", { method: :get, params: {choice3: @drone_questions.choice3, answer: @drone_questions.answer}} %>
256
-
257
- <%= button_to @drone_questions.choice4 , "/home/overtest2", { method: :get, params: {choice4: @drone_questions.choice4, answer: @drone_questions.answer}} %>
258
-
259
- ```
260
-
261
- ### 試したこと
262
-
263
-
264
-
265
- - 問〇について、まず変数toiに0を代入し、toi+=2 としましたがtoi=0も行われるため?毎回2が表示されてしまうような気がします。
266
-
267
-
268
-
269
- - score得点も同様?でhomecontrollerでscore=0を代入し、if文で正解の時score+2しているので次の問題でまたscore=0からはじまるのかと思います。
270
-
271
-
272
-
273
- - 一度表示した問題を表示しないようにする方法は、検索しても出てこないので全くわかりません。例えばDBをdeliteしていくと、.saveさえしなければ新しく始めた時にDBは元に戻っているのでしょうか?
274
-
275
-
276
-
277
- 一か月以上進まず挫折しそうなので、どなたかご助言をお願い申し上げます。