質問編集履歴

1

dadasdsadasdsadasdsadsadasdaddasdosadoskdopskaodksoadkopsakdopsakdosas

2021/04/22 22:49

投稿

hazuma
hazuma

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1,149 +1 @@
1
- コメントの投稿機能をAjaxで行っています。
2
-
3
- コメント投稿時にエラーメッセージ ”コメントを入力してください” を表示させたいのですが、どの部分を変更したらいいのか分からず詰まっている状態です。
4
-
5
-
6
-
7
- [リンク内容](https://i.gyazo.com/3768d52f6605e716a93ac1e5ec3c7d12.png)
8
-
9
- ↑の画像の投稿ボタンを押した際コメントエリアの部分が空の場合にエラーメッセージを表示させる。
10
-
11
- フラッシュメッセージではなく普通のテキスト
12
-
13
-
14
-
15
- #該当しそうなコード
16
-
17
- ```ruby
18
-
19
- class CommentsController < ApplicationController
20
-
21
- def create
22
-
23
- @comment = current_user.comments.build(comment_params)
24
-
25
- @comment.save
26
-
27
- end
28
-
29
-
30
-
31
- def destroy
32
-
33
- @comment = current_user.comments.find(params[:id])
34
-
35
- @comment.destroy!
36
-
37
- end
38
-
39
-
40
-
41
- private
42
-
43
-
44
-
45
- def comment_params
46
-
47
- params.require(:comment).permit(:body).merge(board_id: params[:board_id])
1
+ sdsadosakdopaskdopaskopdkasopkdoaskdopkasopdkoaskdopaskopdsakodkas
48
-
49
- end
50
-
51
- end
52
-
53
-
54
-
55
- ```
56
-
57
-
58
-
59
- ```ruby
60
-
61
- *create.js.erb*
62
-
63
-
64
-
65
- $("#error_messages").remove()
66
-
67
- <% if @comment.errors.present? %>
68
-
69
- $("#new_comment").prepend("<%= j(render('shared/error_messages', object: @comment)) %>")
70
-
71
- <% else %>
72
-
73
- $("#js-table-comment").prepend("<%= j(render('comments/comment', comment: @comment)) %>")
74
-
75
- $("#js-new-comment-body").val('')
76
-
77
- <% end %>
78
-
79
- ```
80
-
81
-
82
-
83
- ```ruby
84
-
85
- _form.html.erb
86
-
87
-
88
-
89
- <div class="row mb-3">
90
-
91
- <div class="col-lg-8 offset-lg-2">
92
-
93
- <%= form_with model: comment, url: [board,comment], remote: true do |f| %>
94
-
95
- <% if @comment.errors.any? %>
96
-
97
- <div id="error_explanation">
98
-
99
- <ul>
100
-
101
- <%= @comment.errors.full_messages.each do |message| %>
102
-
103
- <li><%= message %></li>
104
-
105
- <%end%>
106
-
107
- </ul>
108
-
109
- </div>
110
-
111
- <% end %>
112
-
113
- <%= render 'shared/error_messages', object: f.object %>
114
-
115
- <div class = "form-group">
116
-
117
- <%= f.label :body %>
118
-
119
- <%= f.text_area :body, class: 'form-control'%>
120
-
121
- </div>
122
-
123
- <%= f.submit t('defaults.post'), class: 'btn btn-primary' %>
124
-
125
- <% end %>
126
-
127
- </div>
128
-
129
- </div>
130
-
131
- ```
132
-
133
-
134
-
135
- #自分の考え
136
-
137
- フォームの投稿ボタンを押すとcommentコントローラーのcreateメソッドが実行されるこの時form.html.erbでremote: trueとしている為viewはcreate.js.erbファイルを探す。
138
-
139
- create.js.erbファイルでは
140
-
141
- 非同期処理でリダイレクト処理がされないので、エラーメッセージを除く工程のために一行目を追加
142
-
143
- 二行目からはエラー文表示の有無をif-elseで条件分岐させて判定している。
144
-
145
-
146
-
147
- #エラーの原因
148
-
149
- コントローラー側の処理が何か足りない??