質問編集履歴

1

質問変更

2017/07/19 08:02

投稿

MASA08
MASA08

スコア24

test CHANGED
@@ -1 +1 @@
1
- 新規投稿の際のエラーメッセージの表示につ(Ruby on rails)
1
+ 新規投稿の際のエラーメッセージの表示がなぜ表示されたのかわからな(Ruby on rails)
test CHANGED
@@ -1,50 +1,72 @@
1
- 新規投稿の保存に失敗した場合にエラーメッセージを表示させたいのですが、うまくできません(失敗とは、140字以上の投稿をした時、空の投稿をした時をさします)
1
+ 新規投稿の保存に失敗した場合にエラーメッセージを表示させたいのですが(失敗とは、140字以上の投稿をした時、空の投稿をした時をさします)、表示はされたもののなぜ表示されたかわからないです!
2
+
3
+ 以下コードになります
2
4
 
3
5
 
4
6
 
5
- 現在、new.html.erbには
7
+ posts_controller.erb
6
8
 
7
9
  ```
8
10
 
9
- <%= form_tag("/posts/create") do %>
11
+ class PostsController < ApplicationController
10
12
 
11
- <% @post.errors.full_messages.each do |message| %>
13
+ def index
12
14
 
13
- <div class="form-error">
15
+ @posts = Post.all.order(created_at: :desc)
14
16
 
15
- <%= message %>
17
+ end
16
18
 
17
- </div>
19
+
18
20
 
19
- <% end %>
21
+ def show
20
22
 
21
- <textarea name="content">
23
+ @post = Post.find_by(id: params[:id])
22
24
 
23
-
25
+ end
24
26
 
25
- </textarea>
27
+ def new
26
28
 
27
- <input type="submit" value="投稿">
29
+ @post = Post.new(content: params[:content])
28
30
 
31
+ end
32
+
33
+
34
+
29
- <% end %>
35
+ def create
36
+
37
+ @post = Post.new(content: params[:content])
38
+
39
+ if @post.save
40
+
41
+ flash[:notice] = "投稿を作成しました"
42
+
43
+ redirect_to("/posts/index")
44
+
45
+ else
46
+
47
+ render("/posts/new")
48
+
49
+ end
50
+
51
+ end
52
+
53
+ end
30
54
 
31
55
  ```
32
56
 
57
+
58
+
33
- と記入しているのですが、新規投稿のページにいくと(/posts/new)
59
+ new.html.erb
34
60
 
35
61
  ```
36
62
 
37
- NoMethodError in Posts#new
63
+ <div class="main posts-new">
38
64
 
39
- Showing /home/progate/tweet_app/app/views/posts/new.html.erb where line #7 raised:
65
+ <div class="container">
40
66
 
67
+ <h1 class="form-heading">投稿する</h1>
41
68
 
42
-
43
- undefined method `errors' for nil:NilClass
44
-
45
-
46
-
47
- Extracted source (around line #7):
69
+ <div class="form">
48
70
 
49
71
  <div class="form-body">
50
72
 
@@ -58,16 +80,42 @@
58
80
 
59
81
  </div>
60
82
 
83
+ <% end %>
61
84
 
85
+
86
+
87
+ <textarea name="content">
88
+
89
+ <%= @post.content %>
90
+
91
+ </textarea>
92
+
93
+ <input type="submit" value="投稿">
94
+
95
+ <% end %>
96
+
97
+ </div>
98
+
99
+ </div>
100
+
101
+ </div>
102
+
103
+ </div>
62
104
 
63
105
  ```
64
106
 
65
- と表示されます。
66
107
 
67
108
 
68
109
 
69
- Postコントローラーのnewアクションに何かコードを書かなければいけないという推測は立っているのですが、そこから先がわかりません。ご親切な方、対応お願いします。
70
110
 
111
+ newアクションのところに
71
112
 
113
+ ```
72
114
 
115
+ @post = Post.new(content: params[:content])
116
+
117
+ ```
118
+
119
+ とコードを書いたら動くようにはなりましたが、なぜこのコードが必要なのかが理解できません!
120
+
73
- (ちみにこれはprogateの演習問題で)
121
+ ご親切かた、よろしくお願いしま