質問編集履歴

7

なんのコードなのかをわかりやすくしました

2021/03/06 13:17

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
File without changes
test CHANGED
@@ -38,9 +38,9 @@
38
38
 
39
39
 
40
40
 
41
- 以下、投稿のcontroller
41
+ 以下、投稿のためのcontroller
42
+
42
-
43
+ こちらは、top.html.erbの部分に載せる投稿のためのcodeです
43
-
44
44
 
45
45
  ```
46
46
 
@@ -176,7 +176,7 @@
176
176
 
177
177
 
178
178
 
179
- こちらが、新規投稿ページの部分です
179
+ こちらが、新規投稿ページの部分です
180
180
 
181
181
 
182
182
 
@@ -196,9 +196,11 @@
196
196
 
197
197
  こちらが、投稿一覧を表示するページですね。
198
198
 
199
-
199
+ top.hatml.er
200
-
200
+
201
- ```
201
+ ```
202
+
203
+
202
204
 
203
205
  <div class="content-wrapper">
204
206
 

6

エラー画像のスクリーンショットを貼ったのと、いくつか、コードを書き換えたので、そちらも載せました

2021/03/06 13:17

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
File without changes
test CHANGED
@@ -6,11 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- ```
10
-
11
- ActionView::Template::Error (undefined method `images' for nil:NilClass):
9
+ ![イメージ説明](7b6550030c639ee8b80043e7fd67d865.png)
12
-
13
- ```
14
10
 
15
11
  #問題のソースコード
16
12
 
@@ -24,13 +20,329 @@
24
20
 
25
21
  belongs_to :user, optional: true
26
22
 
23
+
24
+
25
+
26
+
27
27
  end
28
28
 
29
+
30
+
29
- ```
31
+ ```
32
+
33
+
34
+
35
+
36
+
30
-
37
+ そして、こちらがcontrolerです
38
+
39
+
40
+
31
-
41
+ 以下、投稿のcontroller
42
+
43
+
44
+
32
-
45
+ ```
46
+
47
+ class PostsController < ApplicationController
48
+
49
+ before_action :authenticate_user!
50
+
51
+ before_action :find_post, only: [:edit, :update, :show, :destroy]
52
+
53
+
54
+
55
+ def index
56
+
57
+ @posts = Post.all
58
+
59
+ end
60
+
61
+
62
+
63
+ def new
64
+
65
+ @post = Post.new
66
+
67
+ end
68
+
69
+
70
+
71
+ def edit
72
+
73
+ @post = Post.find(post_params)
74
+
75
+ end
76
+
77
+
78
+
79
+ def create
80
+
81
+ return redirect_to new_profile_path,alert: "プロフィールを登録してください" if current_user.profile.blank?
82
+
83
+ @post = current_user
84
+
85
+ @post = Post.create params.require(:post).permit(:content, images: [])
86
+
87
+ if @post.save
88
+
89
+ redirect_to root_path,notice:'投稿に成功しました'
90
+
91
+ else
92
+
93
+ redirect_to new_post_path,notice:'投稿に失敗しました'
94
+
95
+ end
96
+
97
+ end
98
+
99
+
100
+
101
+ def update
102
+
103
+ @post.update params.require(:post).permit(:content, images: [])
104
+
105
+ end
106
+
107
+
108
+
109
+ def destroy
110
+
111
+ if @post.destroy
112
+
113
+ redirect_to root_path,alert: '投稿を削除しました'
114
+
115
+ else
116
+
117
+ redirect_to root_path
118
+
119
+ end
120
+
121
+ end
122
+
123
+
124
+
125
+ private
126
+
127
+
128
+
129
+ def find_post
130
+
131
+ @post = Post.find(params[:id])
132
+
133
+ end
134
+
135
+
136
+
137
+ def force_redirect_unless_my_post
138
+
139
+ return redirect_to root_path,alert:'権限がありません'if @post.user != current_user
140
+
141
+ end
142
+
143
+ end
144
+
145
+
146
+
147
+ ```
148
+
149
+
150
+
151
+ こちらが新規投稿ページですね。
152
+
153
+ こちらは、部分テンプレートです。
154
+
155
+ ```
156
+
157
+ <div class ='post-content'>
158
+
159
+ <%= form_with model: @post, local: true do |f| %>
160
+
161
+ <%= f.text_area :content, :placeholder => "いまどんなカンジ?"%>
162
+
163
+ <%= f.file_field :images, multiple: true%>
164
+
165
+ <div class = 'submit-block'>
166
+
167
+ <%= f.submit '投稿する', class:"button"%>
168
+
169
+ </div>
170
+
171
+ <% end %>
172
+
173
+ </div>
174
+
175
+ ```
176
+
177
+
178
+
179
+ こちらが、新規投稿ページの部分です
180
+
181
+
182
+
183
+ ```
184
+
185
+ <div>
186
+
187
+ <%= render 'form' %>
188
+
189
+
190
+
191
+ </div>
192
+
193
+ ```
194
+
195
+
196
+
197
+ こちらが、投稿一覧を表示するページですね。
198
+
199
+
200
+
201
+ ```
202
+
203
+ <div class="content-wrapper">
204
+
205
+ <div class="content-block">
206
+
207
+ <% @posts.each do |post| %>
208
+
209
+ <div class="content">
210
+
211
+ <div class="user-about">
212
+
213
+ <div class="image">
214
+
215
+ <%= image_tag 'user.JPG'%>
216
+
217
+ </div>
218
+
219
+ <div class="profile">
220
+
221
+ <div class="name-history">
222
+
223
+ <div class="name">
224
+
225
+ taka
226
+
227
+ </div>
228
+
229
+ <div class="mania-histry">
230
+
231
+ マニア歴:1年
232
+
233
+ </div>
234
+
235
+ </div>
236
+
237
+
238
+
239
+ <div class="enjoy-point">
240
+
241
+ 楽しいポイント: 自分の手で作ったものが動く様子が楽しい
242
+
243
+ </div>
244
+
245
+ </div>
246
+
247
+ </div>
248
+
249
+
250
+
251
+ <div class="text">
252
+
253
+ <p><%= post.content %></p>
254
+
255
+ </div>
256
+
257
+
258
+
259
+ <% if @post.images.attached? %>
260
+
261
+ <div class = 'images'>
262
+
263
+ <% @post.images.each do |image| %>
264
+
265
+ <%= image_tag post.images %>
266
+
267
+ </div>
268
+
269
+ <% end %>
270
+
271
+ <% end %>
272
+
273
+
274
+
275
+ <div class="action-menu">
276
+
277
+ <div class="like">
278
+
279
+
280
+
281
+ </div>
282
+
283
+ <div class="comment">
284
+
285
+
286
+
287
+ </div>
288
+
289
+ </div>
290
+
291
+
292
+
293
+ </div>
294
+
295
+
296
+
297
+ <% end %>
298
+
299
+ </div>
300
+
301
+ <div class="sidebar">
302
+
303
+ <div class="box">
304
+
305
+
306
+
307
+ </div>
308
+
309
+ <div class="box">
310
+
311
+
312
+
313
+ </div>
314
+
315
+ </div>
316
+
317
+ </div>
318
+
319
+ ```
320
+
33
- 以下userのモデルです
321
+ 以下、投稿に関するmodelです
322
+
323
+ ```
324
+
325
+ class Post < ApplicationRecord
326
+
327
+ has_many_attached :images
328
+
329
+ belongs_to :user, optional: true
330
+
331
+
332
+
333
+
334
+
335
+ end
336
+
337
+
338
+
339
+
340
+
341
+ ```
342
+
343
+
344
+
345
+ こちらが、userにかんするmodelです
34
346
 
35
347
 
36
348
 
@@ -56,342 +368,10 @@
56
368
 
57
369
 
58
370
 
59
- delegate :name, :leaning_histry, :purpoose, :image, to: :profile
371
+ delegate :name, :mania_histry, :enjoy_point, :image, to: :profile
60
372
 
61
373
  end
62
374
 
63
- ```
64
-
65
-
66
-
67
- そして、こちらがcontrolerです
68
-
69
-
70
-
71
- 以下、投稿のcontroller
72
-
73
-
74
-
75
- ```
76
-
77
- class PostsController < ApplicationController
78
-
79
- before_action :authenticate_user!
80
-
81
- before_action :find_post, only: [:edit, :update, :show, :destroy]
82
-
83
-
84
-
85
- def index
86
-
87
- @posts = Post.all
88
-
89
- end
90
-
91
-
92
-
93
- def new
94
-
95
- @post = Post.new
96
-
97
- end
98
-
99
-
100
-
101
- def edit
102
-
103
- @post = Post.find(post_params)
104
-
105
- end
106
-
107
-
108
-
109
- def create
110
-
111
- return redirect_to new_profile_path,alert: "プロフィールを登録してください" if current_user.profile.blank?
112
-
113
- @post = current_user
114
-
115
- @post = Post.create params.require(:post).permit(:content, images: [])
116
-
117
- binding.pry
118
-
119
- if @post.save
120
-
121
- redirect_to root_path,notice:'投稿に成功しました'
122
-
123
- else
124
-
125
- render :new
126
-
127
- end
128
-
129
- end
130
-
131
-
132
-
133
- def update
134
-
135
- if @post.update(post_params)
136
-
137
- redirect_to root_path
138
-
139
- else
140
-
141
- render :edit
142
-
143
- end
144
-
145
- end
146
-
147
-
148
-
149
- def destroy
150
-
151
- if @post.destroy
152
-
153
- redirect_to root_path,alert: '投稿を削除しました'
154
-
155
- else
156
-
157
- redirect_to root_path
158
-
159
- end
160
-
161
- end
162
-
163
-
164
-
165
- private
166
-
167
- def post_params
168
-
169
- params.require(:post).permit(:content, images: [])
170
-
171
- end
172
-
173
-
174
-
175
- def find_post
176
-
177
- @post = Post.find(params[:id])
178
-
179
- end
180
-
181
-
182
-
183
- def force_redirect_unless_my_post
184
-
185
- return redirect_to root_path,alert:'権限がありません'if @post.user != current_user
186
-
187
- end
188
-
189
- end
190
-
191
-
192
-
193
- ```
194
-
195
-
196
-
197
- こちらが新規投稿ページですね。
198
-
199
- ```
200
-
201
- <div class ='post-content'>
202
-
203
- <%= form_with model: @post, local: true do |f| %>
204
-
205
- <%= f.text_area :content, :placeholder => "いまどんなカンジ?"%>
206
-
207
- <%= f.file_fifffeld :images, direct_upload: true, multiple: true %>
208
-
209
- <div class = 'submit-block'>
210
-
211
- <%= f.submit '投稿する', class:"button"%>
212
-
213
- </div>
214
-
215
- <% end %>
216
-
217
- </div>
218
-
219
- ```
220
-
221
-
222
-
223
- こちらが、投稿一覧を表示するページですね。
224
-
225
-
226
-
227
- ```
228
-
229
- <div class="content-wrapper">
230
-
231
- <div class="content-block">
232
-
233
- <% @posts.each do |post| %>
234
-
235
- <div class="content">
236
-
237
- <div class="user-about">
238
-
239
- <div class="image">
240
-
241
- <%= image_tag 'user.JPG'%>
242
-
243
- </div>
244
-
245
- <div class="profile">
246
-
247
- <div class="name-history">
248
-
249
- <div class="name">
250
-
251
- taka
252
-
253
- </div>
254
-
255
- <div class="mania-histry">
256
-
257
- マニア歴:1年
258
-
259
- </div>
260
-
261
- </div>
262
-
263
-
264
-
265
- <div class="enjoy-point">
266
-
267
- 楽しいポイント: 自分の手で作ったものが動く様子が楽しい
268
-
269
- </div>
270
-
271
- </div>
272
-
273
- </div>
274
-
275
-
276
-
277
- <div class="text">
278
-
279
- <p><% post.content %></p>
280
-
281
- </div>
282
-
283
-
284
-
285
- <% if @post.images.attached? %>
286
-
287
- <div class = 'images'>
288
-
289
- <% @post.images.each do |image| %>
290
-
291
- <%= image_tag image %> <br>
292
-
293
- </div>
294
-
295
- <% end %>
296
-
297
- <% end %>
298
-
299
-
300
-
301
-
302
-
303
- <div class="action-menu">
304
-
305
- <div class="like">
306
-
307
-
308
-
309
- </div>
310
-
311
- <div class="comment">
312
-
313
-
314
-
315
- </div>
316
-
317
- </div>
318
-
319
-
320
-
321
- </div>
322
-
323
- <% end %>
324
-
325
- </div>
326
-
327
- <div class="sidebar">
328
-
329
- <div class="box">
330
-
331
-
332
-
333
- </div>
334
-
335
- <div class="box">
336
-
337
-
338
-
339
- </div>
340
-
341
- </div>
342
-
343
- </div>
344
-
345
- ```
346
-
347
- 以下、投稿に関するmodelです
348
-
349
- ```
350
-
351
- class Post < ApplicationRecord
352
-
353
- has_many_attached :images
354
-
355
- belongs_to :user, optional: true
356
-
357
- end
358
-
359
-
360
-
361
- ```
362
-
363
-
364
-
365
- こちらが、userにかんするmodelです
366
-
367
-
368
-
369
- ```
370
-
371
- class User < ApplicationRecord
372
-
373
- # Include default devise modules. Others available are:
374
-
375
- # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
376
-
377
- devise :database_authenticatable, :registerable,
378
-
379
- :recoverable, :rememberable, :validatable
380
-
381
- # Include default devise modules. Others available are:
382
-
383
- # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
384
-
385
- has_many :posts
386
-
387
- has_one :profile, dependent: :destroy
388
-
389
-
390
-
391
- delegate :name, :mania_histry, :enjoy_point, :image, to: :profile
392
-
393
- end
394
-
395
375
 
396
376
 
397
377
  ```

5

エラーメッセージの表記が分かりづらいなって思ったので、修正しました

2021/03/06 10:37

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,15 @@
2
2
 
3
3
  エラーになってしまいます
4
4
 
5
+ エラーメッセージは以下のとうりです
6
+
7
+
8
+
9
+ ```
10
+
5
- No method error undefined method `images' for nil:NilClass
11
+ ActionView::Template::Error (undefined method `images' for nil:NilClass):
12
+
13
+ ```
6
14
 
7
15
  #問題のソースコード
8
16
 

4

viewのHTMLと、投稿ページのHTMLを表示しました。それと、それぞれのmodelも載せました。そして最後に、エラーメッセージも載せました

2021/03/01 11:57

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  エラーになってしまいます
4
4
 
5
-
5
+ No method error undefined method `images' for nil:NilClass
6
6
 
7
7
  #問題のソースコード
8
8
 
@@ -186,7 +186,209 @@
186
186
 
187
187
 
188
188
 
189
+ こちらが新規投稿ページですね。
190
+
191
+ ```
192
+
193
+ <div class ='post-content'>
194
+
195
+ <%= form_with model: @post, local: true do |f| %>
196
+
197
+ <%= f.text_area :content, :placeholder => "いまどんなカンジ?"%>
198
+
199
+ <%= f.file_fifffeld :images, direct_upload: true, multiple: true %>
200
+
201
+ <div class = 'submit-block'>
202
+
203
+ <%= f.submit '投稿する', class:"button"%>
204
+
205
+ </div>
206
+
207
+ <% end %>
208
+
209
+ </div>
210
+
211
+ ```
212
+
213
+
214
+
215
+ こちらが、投稿一覧を表示するページですね。
216
+
217
+
218
+
219
+ ```
220
+
221
+ <div class="content-wrapper">
222
+
223
+ <div class="content-block">
224
+
225
+ <% @posts.each do |post| %>
226
+
227
+ <div class="content">
228
+
229
+ <div class="user-about">
230
+
231
+ <div class="image">
232
+
233
+ <%= image_tag 'user.JPG'%>
234
+
235
+ </div>
236
+
237
+ <div class="profile">
238
+
239
+ <div class="name-history">
240
+
241
+ <div class="name">
242
+
243
+ taka
244
+
245
+ </div>
246
+
247
+ <div class="mania-histry">
248
+
249
+ マニア歴:1年
250
+
251
+ </div>
252
+
253
+ </div>
254
+
255
+
256
+
257
+ <div class="enjoy-point">
258
+
259
+ 楽しいポイント: 自分の手で作ったものが動く様子が楽しい
260
+
261
+ </div>
262
+
263
+ </div>
264
+
265
+ </div>
266
+
267
+
268
+
269
+ <div class="text">
270
+
271
+ <p><% post.content %></p>
272
+
273
+ </div>
274
+
275
+
276
+
277
+ <% if @post.images.attached? %>
278
+
279
+ <div class = 'images'>
280
+
281
+ <% @post.images.each do |image| %>
282
+
283
+ <%= image_tag image %> <br>
284
+
285
+ </div>
286
+
287
+ <% end %>
288
+
289
+ <% end %>
290
+
291
+
292
+
293
+
294
+
295
+ <div class="action-menu">
296
+
297
+ <div class="like">
298
+
299
+
300
+
301
+ </div>
302
+
303
+ <div class="comment">
304
+
305
+
306
+
307
+ </div>
308
+
309
+ </div>
310
+
311
+
312
+
313
+ </div>
314
+
315
+ <% end %>
316
+
317
+ </div>
318
+
319
+ <div class="sidebar">
320
+
321
+ <div class="box">
322
+
323
+
324
+
325
+ </div>
326
+
327
+ <div class="box">
328
+
329
+
330
+
331
+ </div>
332
+
333
+ </div>
334
+
335
+ </div>
336
+
337
+ ```
338
+
339
+ 以下、投稿に関するmodelです
340
+
341
+ ```
342
+
343
+ class Post < ApplicationRecord
344
+
345
+ has_many_attached :images
346
+
347
+ belongs_to :user, optional: true
348
+
349
+ end
350
+
351
+
352
+
353
+ ```
354
+
355
+
356
+
357
+ こちらが、userにかんするmodelです
358
+
359
+
360
+
361
+ ```
362
+
363
+ class User < ApplicationRecord
364
+
365
+ # Include default devise modules. Others available are:
366
+
367
+ # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
368
+
369
+ devise :database_authenticatable, :registerable,
370
+
371
+ :recoverable, :rememberable, :validatable
372
+
373
+ # Include default devise modules. Others available are:
374
+
375
+ # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
376
+
377
+ has_many :posts
378
+
379
+ has_one :profile, dependent: :destroy
380
+
381
+
382
+
383
+ delegate :name, :mania_histry, :enjoy_point, :image, to: :profile
384
+
385
+ end
386
+
387
+
388
+
389
+ ```
390
+
189
- #仮
391
+ #仮
190
392
 
191
393
 
192
394
 

3

スペルのOが抜けていました。

2021/03/01 01:50

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
@@ -1 +1 @@
1
- Active Strage を使って画像を投稿できるようにしたいのですが、投稿一覧ページに遷移すると、undefined method `images' for nil:NilClassとなってしまう
1
+ Active Storag を使って画像を投稿できるようにしたいのですが、投稿一覧ページに遷移すると、undefined method `images' for nil:NilClassとなってしまう
test CHANGED
@@ -1,4 +1,4 @@
1
- Active Strageを使ってコミュニティサイトを作ろうと考えていますが、投稿をしたあとにページ遷移をすると、
1
+ Active Storageを使ってコミュニティサイトを作ろうと考えていますが、投稿をしたあとにページ遷移をすると、
2
2
 
3
3
  エラーになってしまいます
4
4
 
@@ -200,6 +200,6 @@
200
200
 
201
201
  もう一つが、
202
202
 
203
- Active Strageを実装するにあたって`genereta resource`を実行すると調べたところの記事には書いてありました。その時僕は、そのコマンドを実行していませんでした、
203
+ Active Storageを実装するにあたって`genereta resource`を実行すると調べたところの記事には書いてありました。その時僕は、そのコマンドを実行していませんでした、
204
204
 
205
205
  それが原因なのかなと思っているんですけど、解決の糸口は見つけられていないです。

2

Active Strageになるように名前を変更しました

2021/02/28 01:02

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
File without changes
test CHANGED
@@ -200,6 +200,6 @@
200
200
 
201
201
  もう一つが、
202
202
 
203
- active Strageを実装するにあたって`genereta resource`を実行すると調べたところの記事には書いてありました。その時僕は、そのコマンドを実行していませんでした、
203
+ Active Strageを実装するにあたって`genereta resource`を実行すると調べたところの記事には書いてありました。その時僕は、そのコマンドを実行していませんでした、
204
204
 
205
205
  それが原因なのかなと思っているんですけど、解決の糸口は見つけられていないです。

1

ご指摘のとうりにスペルを修正しました。ご指摘ありがとうございます

2021/02/28 01:00

投稿

kawasaki4563
kawasaki4563

スコア32

test CHANGED
@@ -1 +1 @@
1
- Active strage を使って画像を投稿できるようにしたいのですが、投稿一覧ページに遷移すると、undefined method `images' for nil:NilClassとなってしまう
1
+ Active Strage を使って画像を投稿できるようにしたいのですが、投稿一覧ページに遷移すると、undefined method `images' for nil:NilClassとなってしまう
test CHANGED
@@ -1,4 +1,4 @@
1
- Active strageを使ってコミュニティサイトを作ろうと考えていますが、投稿をしたあとにページ遷移をすると、
1
+ Active Strageを使ってコミュニティサイトを作ろうと考えていますが、投稿をしたあとにページ遷移をすると、
2
2
 
3
3
  エラーになってしまいます
4
4
 
@@ -200,6 +200,6 @@
200
200
 
201
201
  もう一つが、
202
202
 
203
- active strageを実装するにあたって`genereta resource`を実行すると調べたところの記事には書いてありました。その時僕は、そのコマンドを実行していませんでした、
203
+ active Strageを実装するにあたって`genereta resource`を実行すると調べたところの記事には書いてありました。その時僕は、そのコマンドを実行していませんでした、
204
204
 
205
205
  それが原因なのかなと思っているんですけど、解決の糸口は見つけられていないです。