teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

書式の改善

2021/07/25 13:20

投稿

iyteratail
iyteratail

スコア1

title CHANGED
File without changes
body CHANGED
@@ -137,6 +137,13 @@
137
137
  winterboum様にご回答いただき、いただいたアドバイスを元に変更してみたところ、バリデーションのエラーメッセージが表示されるようになりました!
138
138
 
139
139
  一方で、ボタンをクリックすると常にエラーメッセージが表示されるようになってしまい、新規投稿が保存されなくなるという処理になってしまいました。。
140
+
141
+ ```バリデーションによって出ているエラーメッセージ
142
+ 2 errors prohibited this book from being saved:
143
+ ・Title can't be blank
144
+ ・Body can't be blank
145
+ ```
146
+
140
147
  現在、エラーは出ていないのですが、上記の状態となっております。
141
148
 
142
149
  以下がコードになります!

3

誤字

2021/07/25 13:20

投稿

iyteratail
iyteratail

スコア1

title CHANGED
File without changes
body CHANGED
@@ -130,8 +130,9 @@
130
130
  ```
131
131
 
132
132
 
133
- 追記(2021/7/25/13:11)
133
+ ### ここから以下は追記です(2021/7/25/13:11)
134
134
 
135
+
135
136
  **現在**
136
137
  winterboum様にご回答いただき、いただいたアドバイスを元に変更してみたところ、バリデーションのエラーメッセージが表示されるようになりました!
137
138
 

2

文法の修正

2021/07/25 04:12

投稿

iyteratail
iyteratail

スコア1

title CHANGED
File without changes
body CHANGED
@@ -7,6 +7,7 @@
7
7
  下記がエラーメッセージと現在のコードとなります。
8
8
 
9
9
  ### 発生している問題・エラーメッセージ
10
+ **当初**
10
11
  indexのページに飛ぼうとすると、下記エラーメッセージが表示されます。
11
12
 
12
13
  ```errormessage
@@ -129,7 +130,140 @@
129
130
  ```
130
131
 
131
132
 
133
+ 追記(2021/7/25/13:11)
132
134
 
135
+ **現在**
136
+ winterboum様にご回答いただき、いただいたアドバイスを元に変更してみたところ、バリデーションのエラーメッセージが表示されるようになりました!
137
+
138
+ 一方で、ボタンをクリックすると常にエラーメッセージが表示されるようになってしまい、新規投稿が保存されなくなるという処理になってしまいました。。
139
+ 現在、エラーは出ていないのですが、上記の状態となっております。
140
+
141
+ 以下がコードになります!
142
+
143
+ ```Controller
144
+ class BooksController < ApplicationController
145
+ def index
146
+ @books = Book.all
147
+ @book = Book.new
148
+
149
+ end
150
+
151
+ def new
152
+ @book = Book.new
153
+ end
154
+
155
+ def create
156
+ @book = Book.new(book_params)
157
+ if @book.save
158
+ flash[:notice] = "Book was successfully created."
159
+ redirect_to book_path(@book.id)
160
+ else
161
+ #下記がelseの後に行き着く画面
162
+ @books = Book.all
163
+ render :index
164
+ end
165
+ end
166
+
167
+ def show
168
+ @book = Book.find(params[:id])
169
+ end
170
+
171
+ def edit
172
+ @book = Book.find(params[:id])
173
+ end
174
+
175
+ def update
176
+ book = Book.find(params[:id])
177
+ book.update!(book_params)
178
+ p "標準出力にのみ反映"
179
+ logger.debug("標準出力とログファイルに記録される")
180
+ redirect_to book_path(book)
181
+ end
182
+
183
+ def destroy
184
+ book = Book.find(params[:id])
185
+ book.destroy
186
+ redirect_to books_path
187
+ end
188
+
189
+
190
+ private
191
+ def book_params
192
+ params.permit(:title, :body)
193
+ end
194
+
195
+ end
196
+
197
+ ```
198
+
199
+ ```indexERB
200
+ <header></header>
201
+
202
+ <main class="top">
203
+ <h1>Books</h1>
204
+
205
+ <!--テーブル入力欄はここから-->
206
+ <table>
207
+ <tr>
208
+ <th>Title</th>
209
+ <th>Body</th>
210
+ </tr>
211
+ <% @books.each do |book| %>
212
+ <tr>
213
+ <td><%= book.title %></td>
214
+ <td><%= book.body %></td>
215
+ <!--なぜここのリンクはbook.idになるのか?-->
216
+ <!--本来なら(@book)で行けるのでは?-->
217
+ <td><%= link_to "Show", book_path(book.id)%></td>
218
+ <td><%= link_to "Edit", edit_book_path(book.id) %></td>
219
+ <td><%= link_to "Destroy", book_path(book), method: :delete, "data-confirm" => "Are you sure?" %></td>
220
+ </tr>
221
+ <% end %>
222
+ </table>
223
+ <!--テーブル入力欄はここまで-->
224
+
225
+ <h2>New book</h2>
226
+
227
+ <!--- ここからエラーメッセージの出力 -->
228
+ <% if @book.errors.any? %>
229
+ <%= @book.errors.count %> errors prohibited this book from being saved:
230
+ <ul>
231
+ <% @book.errors.full_messages.each do |message| %>
232
+ <li>
233
+ <%= message %>
234
+ </li>
235
+ <% end %>
236
+ </ul>
237
+ <% end %>
238
+
239
+
240
+ <!--フォーム×2 + 投稿ボタンはここから-->
241
+ <%= form_with model:@book, local: true do |f| %>
242
+ <h5>Title</h5>
243
+ <%= f.text_field :title %>
244
+ <h5>Body</h5>
245
+ <%= f.text_area :body %>
246
+ <div>
247
+ <%= f.submit 'Create Book' %>
248
+ </div>
249
+
250
+ <% end %>
251
+ <!--フォーム×2 + 投稿ボタンはここまで-->
252
+ </main>
253
+
254
+ <footer></footer>
255
+ ```
256
+
257
+ ```bookModel
258
+ class Book < ApplicationRecord
259
+ validates :title, presence: true
260
+ validates :body, presence: true
261
+ end
262
+
263
+ ```
264
+
265
+ どうかよろしくお願いいたします。。
266
+
133
267
  ### 試したこと
134
268
  https://teratail.com/questions/299480?link=qa_related_pc_sidebar
135
269
  上記を参考にcreateアクション内の定義を確認

1

書式の改善

2021/07/25 04:10

投稿

iyteratail
iyteratail

スコア1

title CHANGED
File without changes
body CHANGED
@@ -3,6 +3,9 @@
3
3
  読んだ本の感想を投稿する簡易的なアプリケーションを作成しています。
4
4
  現在、フォームが空欄だった時のエラーメッセージを表示する部分を実装しています。
5
5
 
6
+ バリデーションのエラーメッセージを表示するためには現在のコードをどのように変更すればいいのか、ご教示いただけますでしょうか。。
7
+ 下記がエラーメッセージと現在のコードとなります。
8
+
6
9
  ### 発生している問題・エラーメッセージ
7
10
  indexのページに飛ぼうとすると、下記エラーメッセージが表示されます。
8
11
 
@@ -12,8 +15,6 @@
12
15
 
13
16
  undefined method `errors' for #<Book::ActiveRecord_Relation:0x00007f15b00ba0a0>
14
17
  ```
15
- バリデーションのエラーメッセージを表示するためには現在のコードをどのように変更すればいいのか、ご教示いただけますでしょうか。。
16
- 下記が現在のコードとなります。
17
18
 
18
19
  ### 該当のソースコード
19
20