質問編集履歴

4

書式の改善

2021/07/25 13:20

投稿

iyteratail
iyteratail

スコア1

test CHANGED
File without changes
test CHANGED
@@ -276,6 +276,20 @@
276
276
 
277
277
  一方で、ボタンをクリックすると常にエラーメッセージが表示されるようになってしまい、新規投稿が保存されなくなるという処理になってしまいました。。
278
278
 
279
+
280
+
281
+ ```バリデーションによって出ているエラーメッセージ
282
+
283
+ 2 errors prohibited this book from being saved:
284
+
285
+ ・Title can't be blank
286
+
287
+ ・Body can't be blank
288
+
289
+ ```
290
+
291
+
292
+
279
293
  現在、エラーは出ていないのですが、上記の状態となっております。
280
294
 
281
295
 

3

誤字

2021/07/25 13:20

投稿

iyteratail
iyteratail

スコア1

test CHANGED
File without changes
test CHANGED
@@ -262,7 +262,9 @@
262
262
 
263
263
 
264
264
 
265
- 追記(2021/7/25/13:11)
265
+ ### ここから以下は追記です(2021/7/25/13:11)
266
+
267
+
266
268
 
267
269
 
268
270
 

2

文法の修正

2021/07/25 04:12

投稿

iyteratail
iyteratail

スコア1

test CHANGED
File without changes
test CHANGED
@@ -16,6 +16,8 @@
16
16
 
17
17
  ### 発生している問題・エラーメッセージ
18
18
 
19
+ **当初**
20
+
19
21
  indexのページに飛ぼうとすると、下記エラーメッセージが表示されます。
20
22
 
21
23
 
@@ -260,6 +262,272 @@
260
262
 
261
263
 
262
264
 
265
+ 追記(2021/7/25/13:11)
266
+
267
+
268
+
269
+ **現在**
270
+
271
+ winterboum様にご回答いただき、いただいたアドバイスを元に変更してみたところ、バリデーションのエラーメッセージが表示されるようになりました!
272
+
273
+
274
+
275
+ 一方で、ボタンをクリックすると常にエラーメッセージが表示されるようになってしまい、新規投稿が保存されなくなるという処理になってしまいました。。
276
+
277
+ 現在、エラーは出ていないのですが、上記の状態となっております。
278
+
279
+
280
+
281
+ 以下がコードになります!
282
+
283
+
284
+
285
+ ```Controller
286
+
287
+ class BooksController < ApplicationController
288
+
289
+ def index
290
+
291
+ @books = Book.all
292
+
293
+ @book = Book.new
294
+
295
+
296
+
297
+ end
298
+
299
+
300
+
301
+ def new
302
+
303
+ @book = Book.new
304
+
305
+ end
306
+
307
+
308
+
309
+ def create
310
+
311
+ @book = Book.new(book_params)
312
+
313
+ if @book.save
314
+
315
+ flash[:notice] = "Book was successfully created."
316
+
317
+ redirect_to book_path(@book.id)
318
+
319
+ else
320
+
321
+ #下記がelseの後に行き着く画面
322
+
323
+ @books = Book.all
324
+
325
+ render :index
326
+
327
+ end
328
+
329
+ end
330
+
331
+
332
+
333
+ def show
334
+
335
+ @book = Book.find(params[:id])
336
+
337
+ end
338
+
339
+
340
+
341
+ def edit
342
+
343
+ @book = Book.find(params[:id])
344
+
345
+ end
346
+
347
+
348
+
349
+ def update
350
+
351
+ book = Book.find(params[:id])
352
+
353
+ book.update!(book_params)
354
+
355
+ p "標準出力にのみ反映"
356
+
357
+ logger.debug("標準出力とログファイルに記録される")
358
+
359
+ redirect_to book_path(book)
360
+
361
+ end
362
+
363
+
364
+
365
+ def destroy
366
+
367
+ book = Book.find(params[:id])
368
+
369
+ book.destroy
370
+
371
+ redirect_to books_path
372
+
373
+ end
374
+
375
+
376
+
377
+
378
+
379
+ private
380
+
381
+ def book_params
382
+
383
+ params.permit(:title, :body)
384
+
385
+ end
386
+
387
+
388
+
389
+ end
390
+
391
+
392
+
393
+ ```
394
+
395
+
396
+
397
+ ```indexERB
398
+
399
+ <header></header>
400
+
401
+
402
+
403
+ <main class="top">
404
+
405
+ <h1>Books</h1>
406
+
407
+
408
+
409
+ <!--テーブル入力欄はここから-->
410
+
411
+ <table>
412
+
413
+ <tr>
414
+
415
+ <th>Title</th>
416
+
417
+ <th>Body</th>
418
+
419
+ </tr>
420
+
421
+ <% @books.each do |book| %>
422
+
423
+ <tr>
424
+
425
+ <td><%= book.title %></td>
426
+
427
+ <td><%= book.body %></td>
428
+
429
+ <!--なぜここのリンクはbook.idになるのか?-->
430
+
431
+ <!--本来なら(@book)で行けるのでは?-->
432
+
433
+ <td><%= link_to "Show", book_path(book.id)%></td>
434
+
435
+ <td><%= link_to "Edit", edit_book_path(book.id) %></td>
436
+
437
+ <td><%= link_to "Destroy", book_path(book), method: :delete, "data-confirm" => "Are you sure?" %></td>
438
+
439
+ </tr>
440
+
441
+ <% end %>
442
+
443
+ </table>
444
+
445
+ <!--テーブル入力欄はここまで-->
446
+
447
+
448
+
449
+ <h2>New book</h2>
450
+
451
+
452
+
453
+ <!--- ここからエラーメッセージの出力 -->
454
+
455
+ <% if @book.errors.any? %>
456
+
457
+ <%= @book.errors.count %> errors prohibited this book from being saved:
458
+
459
+ <ul>
460
+
461
+ <% @book.errors.full_messages.each do |message| %>
462
+
463
+ <li>
464
+
465
+ <%= message %>
466
+
467
+ </li>
468
+
469
+ <% end %>
470
+
471
+ </ul>
472
+
473
+ <% end %>
474
+
475
+
476
+
477
+
478
+
479
+ <!--フォーム×2 + 投稿ボタンはここから-->
480
+
481
+ <%= form_with model:@book, local: true do |f| %>
482
+
483
+ <h5>Title</h5>
484
+
485
+ <%= f.text_field :title %>
486
+
487
+ <h5>Body</h5>
488
+
489
+ <%= f.text_area :body %>
490
+
491
+ <div>
492
+
493
+ <%= f.submit 'Create Book' %>
494
+
495
+ </div>
496
+
497
+
498
+
499
+ <% end %>
500
+
501
+ <!--フォーム×2 + 投稿ボタンはここまで-->
502
+
503
+ </main>
504
+
505
+
506
+
507
+ <footer></footer>
508
+
509
+ ```
510
+
511
+
512
+
513
+ ```bookModel
514
+
515
+ class Book < ApplicationRecord
516
+
517
+ validates :title, presence: true
518
+
519
+ validates :body, presence: true
520
+
521
+ end
522
+
523
+
524
+
525
+ ```
526
+
527
+
528
+
529
+ どうかよろしくお願いいたします。。
530
+
263
531
 
264
532
 
265
533
  ### 試したこと

1

書式の改善

2021/07/25 04:10

投稿

iyteratail
iyteratail

スコア1

test CHANGED
File without changes
test CHANGED
@@ -8,6 +8,12 @@
8
8
 
9
9
 
10
10
 
11
+ バリデーションのエラーメッセージを表示するためには現在のコードをどのように変更すればいいのか、ご教示いただけますでしょうか。。
12
+
13
+ 下記がエラーメッセージと現在のコードとなります。
14
+
15
+
16
+
11
17
  ### 発生している問題・エラーメッセージ
12
18
 
13
19
  indexのページに飛ぼうとすると、下記エラーメッセージが表示されます。
@@ -26,10 +32,6 @@
26
32
 
27
33
  ```
28
34
 
29
- バリデーションのエラーメッセージを表示するためには現在のコードをどのように変更すればいいのか、ご教示いただけますでしょうか。。
30
-
31
- 下記が現在のコードとなります。
32
-
33
35
 
34
36
 
35
37
  ### 該当のソースコード