質問編集履歴

5

コントロールを変更

2019/12/09 03:16

投稿

Yuukou
Yuukou

スコア5

test CHANGED
File without changes
test CHANGED
@@ -114,7 +114,7 @@
114
114
 
115
115
  validates :user_id, {presence: true}
116
116
 
117
-
117
+ belongs_to :user
118
118
 
119
119
  def user
120
120
 
@@ -122,7 +122,7 @@
122
122
 
123
123
  end
124
124
 
125
-
125
+ # self.user_idのユーザーを戻り値として返す
126
126
 
127
127
  end
128
128
 

4

エラーメッセージの内容を編集しました。

2019/12/09 03:15

投稿

Yuukou
Yuukou

スコア5

test CHANGED
File without changes
test CHANGED
@@ -20,6 +20,14 @@
20
20
 
21
21
  NoMethodError in Posts#index
22
22
 
23
+
24
+
25
+ /app/views/posts/index.html.erb where line #7 raised:
26
+
27
+
28
+
29
+ undefined method `image_name' for nil:NilClass
30
+
23
31
  ```
24
32
 
25
33
 

3

usersのコントローラーを追加しました。

2019/12/08 12:25

投稿

Yuukou
Yuukou

スコア5

test CHANGED
File without changes
test CHANGED
@@ -231,3 +231,185 @@
231
231
 
232
232
 
233
233
  ```
234
+
235
+
236
+
237
+
238
+
239
+ usersのコントローラーはこちらになります。
240
+
241
+ ```
242
+
243
+ class UsersController < ApplicationController
244
+
245
+
246
+
247
+ before_action :authenticate_user,{only: [:index,:show,:edit,:update]}
248
+
249
+ before_action :forbid_login_user,{only:[:new,:create,:login_form,:login]}
250
+
251
+ before_action :ensure_correct_user, {only: [:edit, :update]}
252
+
253
+
254
+
255
+ def index
256
+
257
+ @users = User.all
258
+
259
+ end
260
+
261
+ def show
262
+
263
+ @user = User.find_by(id: params[:id])
264
+
265
+ end
266
+
267
+ def new
268
+
269
+ @user = User.new
270
+
271
+ end
272
+
273
+ def create
274
+
275
+ @user = User.new(
276
+
277
+ name: params[:name],
278
+
279
+ email: params[:email],
280
+
281
+ image_name: "default_user.jpg",
282
+
283
+ password: params[:password]
284
+
285
+ )
286
+
287
+ if @user.save
288
+
289
+ session[:user_id] = @user.id # 登録されたユーザーのidを変数sessionに代入
290
+
291
+ flash[:notice] = "新規登録しました。"
292
+
293
+ redirect_to("/users/#{@user.id}")
294
+
295
+ else
296
+
297
+ render("users/new")
298
+
299
+ end
300
+
301
+ end
302
+
303
+ def edit
304
+
305
+ @user = User.find_by(id: params[:id])
306
+
307
+ end
308
+
309
+ def update
310
+
311
+ @user = User.find_by(id: params[:id])
312
+
313
+ @user.name = params[:name]
314
+
315
+ @user.email = params[:email]
316
+
317
+
318
+
319
+ if params[:image]
320
+
321
+ @user.image_name = "#{@user.id}.jpg"
322
+
323
+ image = params[:image]
324
+
325
+ File.binwrite("public/user_images/#{@user.image_name}", image.read)
326
+
327
+ end
328
+
329
+
330
+
331
+ if @user.save
332
+
333
+ flash[:notice] = "登録内容を編集しました。"
334
+
335
+ redirect_to("/users/#{@user.id}")
336
+
337
+ else
338
+
339
+ render("users/edit")
340
+
341
+ end
342
+
343
+ end
344
+
345
+
346
+
347
+ def login_form
348
+
349
+ end
350
+
351
+ def login
352
+
353
+ @user = User.find_by(
354
+
355
+ email: params[:email],
356
+
357
+ password: params[:password]
358
+
359
+ ) #フォームに入力されたメールアドレスとパスワードを取得
360
+
361
+ if @user
362
+
363
+ session[:user_id] = @user.id # 変数sessionに、ログインに成功したユーザーのidを代入
364
+
365
+ flash[:notice] ="ログインしました"
366
+
367
+ redirect_to("/posts/index")
368
+
369
+ else
370
+
371
+ @error_message = "メールアドレスまたはパスワードが間違っています"
372
+
373
+ @email = params[:email]
374
+
375
+ @password = params[:password]
376
+
377
+ render("users/login_form")
378
+
379
+ end #@userが存在するかどうかを判定するif文作成
380
+
381
+ end
382
+
383
+
384
+
385
+ def logout
386
+
387
+ session[:user_id] = nil
388
+
389
+ flash[:notice] = "ログアウトしました"
390
+
391
+ redirect_to("/login")
392
+
393
+ end
394
+
395
+
396
+
397
+ def ensure_correct_user
398
+
399
+ if @current_user.id != params[:id].to_i
400
+
401
+ flash[:notice] = "権限がありません"
402
+
403
+ redirect_to("/posts/index")
404
+
405
+ end
406
+
407
+ end # ログイン中のユーザー」と「編集しようとしているユーザー」が正しくない場合の処理
408
+
409
+
410
+
411
+ end
412
+
413
+
414
+
415
+ ```

2

users_controller.rb をposts_controller.rbに変更しました。

2019/12/07 14:11

投稿

Yuukou
Yuukou

スコア5

test CHANGED
File without changes
test CHANGED
@@ -124,172 +124,110 @@
124
124
 
125
125
  ```ruby
126
126
 
127
- class UsersController < ApplicationController
127
+ class PostsController < ApplicationController
128
-
129
-
130
-
128
+
131
- before_action :authenticate_user,{only: [:index,:show,:edit,:update]}
129
+ before_action :authenticate_user
132
-
133
- before_action :forbid_login_user,{only:[:new,:create,:login_form,:login]}
130
+
134
-
135
- before_action :ensure_correct_user, {only: [:edit, :update]}
131
+
136
-
137
-
138
132
 
139
133
  def index
140
134
 
141
- @users = User.all
135
+ @posts = Post.all.order(created_at: :desc)
142
-
136
+
143
- end
137
+ end
138
+
139
+
144
140
 
145
141
  def show
146
142
 
147
- @user = User.find_by(id: params[:id])
143
+ @post = Post.find_by(id: params[:id])
144
+
148
-
145
+ @user = @post.user
146
+
149
- end
147
+ end
148
+
149
+
150
150
 
151
151
  def new
152
152
 
153
- @user = User.new
153
+ @post = Post.new
154
-
154
+
155
- end
155
+ end
156
+
157
+
156
158
 
157
159
  def create
158
160
 
159
- @user = User.new(
161
+ @post = Post.new(
160
-
162
+
161
- name: params[:name],
163
+ content: params[:content],
162
-
163
- email: params[:email],
164
+
164
-
165
- image_name: "default_user.jpg",
166
-
167
- password: params[:password]
165
+ user_id: @current_user.id
168
-
166
+
169
- )
167
+ )
170
-
168
+
171
- if @user.save
169
+ if @post.save
172
-
173
- session[:user_id] = @user.id # 登録されたユーザーのidを変数sessionに代入
170
+
174
-
175
- flash[:notice] = "新規登録しました"
171
+ flash[:notice] = "投稿を作成しました"
176
-
172
+
177
- redirect_to("/users/#{@user.id}")
173
+ redirect_to("/posts/index")
178
174
 
179
175
  else
180
176
 
181
- render("users/new")
177
+ render("posts/new")
182
178
 
183
179
  end
184
180
 
185
181
  end
186
182
 
183
+
184
+
187
185
  def edit
188
186
 
189
- @user = User.find_by(id: params[:id])
187
+ @post = Post.find_by(id: params[:id])
190
-
188
+
191
- end
189
+ end
190
+
191
+
192
192
 
193
193
  def update
194
194
 
195
- @user = User.find_by(id: params[:id])
195
+ @post = Post.find_by(id: params[:id])
196
-
196
+
197
- @user.name = params[:name]
197
+ @post.content = params[:content]
198
-
199
- @user.email = params[:email]
198
+
200
-
201
-
202
-
203
- if params[:image]
199
+ if @post.save
204
-
200
+
205
- @user.image_name = "#{@user.id}.jpg"
201
+ flash[:notice] = "投稿を編集しました"
206
-
207
- image = params[:image]
202
+
208
-
209
- File.binwrite("public/user_images/#{@user.image_name}", image.read)
203
+ redirect_to("/posts/index")
204
+
205
+ else
206
+
207
+ render("posts/edit")
210
208
 
211
209
  end
212
210
 
213
-
214
-
215
- if @user.save
216
-
217
- flash[:notice] = "登録内容を編集しました。"
218
-
219
- redirect_to("/users/#{@user.id}")
220
-
221
- else
222
-
223
- render("users/edit")
224
-
225
- end
211
+ end
212
+
213
+
214
+
226
-
215
+ def destroy
216
+
217
+ @post = Post.find_by(id: params[:id])
218
+
219
+ @post.destroy
220
+
221
+ flash[:notice] = "投稿を削除しました"
222
+
223
+ redirect_to("/posts/index")
224
+
227
- end
225
+ end
228
-
229
-
230
-
231
- def login_form
226
+
232
-
227
+
228
+
233
- end
229
+ end
234
-
235
- def login
230
+
236
-
237
- @user = User.find_by(
231
+
238
-
239
- email: params[:email],
232
+
240
-
241
- password: params[:password]
242
-
243
- ) #フォームに入力されたメールアドレスとパスワードを取得
244
-
245
- if @user
246
-
247
- session[:user_id] = @user.id # 変数sessionに、ログインに成功したユーザーのidを代入
248
-
249
- flash[:notice] ="ログインしました"
250
-
251
- redirect_to("/posts/index")
252
-
253
- else
254
-
255
- @error_message = "メールアドレスまたはパスワードが間違っています"
256
-
257
- @email = params[:email]
258
-
259
- @password = params[:password]
260
-
261
- render("users/login_form")
262
-
263
- end #@userが存在するかどうかを判定するif文作成
264
-
265
- end
266
-
267
-
268
-
269
- def logout
270
-
271
- session[:user_id] = nil
272
-
273
- flash[:notice] = "ログアウトしました"
274
-
275
- redirect_to("/login")
276
-
277
- end
278
-
279
-
280
-
281
- def ensure_correct_user
282
-
283
- if @current_user.id != params[:id].to_i
284
-
285
- flash[:notice] = "権限がありません"
286
-
287
- redirect_to("/posts/index")
288
-
289
- end
290
-
291
- end # ログイン中のユーザー」と「編集しようとしているユーザー」が正しくない場合の処理
292
-
293
- end
294
-
295
- ```
233
+ ```

1

ご指摘いただきありがとうございます。コントローラを記載しました。よろしくお願いいたします。

2019/12/06 14:30

投稿

Yuukou
Yuukou

スコア5

test CHANGED
File without changes
test CHANGED
@@ -124,10 +124,172 @@
124
124
 
125
125
  ```ruby
126
126
 
127
+ class UsersController < ApplicationController
128
+
129
+
130
+
131
+ before_action :authenticate_user,{only: [:index,:show,:edit,:update]}
132
+
133
+ before_action :forbid_login_user,{only:[:new,:create,:login_form,:login]}
134
+
135
+ before_action :ensure_correct_user, {only: [:edit, :update]}
136
+
137
+
138
+
127
139
  def index
128
140
 
129
- @posts = Post.all.order(created_at: :desc)
141
+ @users = User.all
130
-
142
+
131
- end
143
+ end
144
+
132
-
145
+ def show
146
+
147
+ @user = User.find_by(id: params[:id])
148
+
149
+ end
150
+
151
+ def new
152
+
153
+ @user = User.new
154
+
155
+ end
156
+
157
+ def create
158
+
159
+ @user = User.new(
160
+
161
+ name: params[:name],
162
+
163
+ email: params[:email],
164
+
165
+ image_name: "default_user.jpg",
166
+
167
+ password: params[:password]
168
+
169
+ )
170
+
171
+ if @user.save
172
+
173
+ session[:user_id] = @user.id # 登録されたユーザーのidを変数sessionに代入
174
+
175
+ flash[:notice] = "新規登録しました。"
176
+
177
+ redirect_to("/users/#{@user.id}")
178
+
179
+ else
180
+
181
+ render("users/new")
182
+
183
+ end
184
+
185
+ end
186
+
187
+ def edit
188
+
189
+ @user = User.find_by(id: params[:id])
190
+
191
+ end
192
+
193
+ def update
194
+
195
+ @user = User.find_by(id: params[:id])
196
+
197
+ @user.name = params[:name]
198
+
199
+ @user.email = params[:email]
200
+
201
+
202
+
203
+ if params[:image]
204
+
205
+ @user.image_name = "#{@user.id}.jpg"
206
+
207
+ image = params[:image]
208
+
209
+ File.binwrite("public/user_images/#{@user.image_name}", image.read)
210
+
211
+ end
212
+
213
+
214
+
215
+ if @user.save
216
+
217
+ flash[:notice] = "登録内容を編集しました。"
218
+
219
+ redirect_to("/users/#{@user.id}")
220
+
221
+ else
222
+
223
+ render("users/edit")
224
+
225
+ end
226
+
227
+ end
228
+
229
+
230
+
231
+ def login_form
232
+
233
+ end
234
+
235
+ def login
236
+
237
+ @user = User.find_by(
238
+
239
+ email: params[:email],
240
+
241
+ password: params[:password]
242
+
243
+ ) #フォームに入力されたメールアドレスとパスワードを取得
244
+
245
+ if @user
246
+
247
+ session[:user_id] = @user.id # 変数sessionに、ログインに成功したユーザーのidを代入
248
+
249
+ flash[:notice] ="ログインしました"
250
+
251
+ redirect_to("/posts/index")
252
+
253
+ else
254
+
255
+ @error_message = "メールアドレスまたはパスワードが間違っています"
256
+
257
+ @email = params[:email]
258
+
259
+ @password = params[:password]
260
+
261
+ render("users/login_form")
262
+
263
+ end #@userが存在するかどうかを判定するif文作成
264
+
265
+ end
266
+
267
+
268
+
269
+ def logout
270
+
271
+ session[:user_id] = nil
272
+
273
+ flash[:notice] = "ログアウトしました"
274
+
275
+ redirect_to("/login")
276
+
277
+ end
278
+
279
+
280
+
281
+ def ensure_correct_user
282
+
283
+ if @current_user.id != params[:id].to_i
284
+
285
+ flash[:notice] = "権限がありません"
286
+
287
+ redirect_to("/posts/index")
288
+
289
+ end
290
+
291
+ end # ログイン中のユーザー」と「編集しようとしているユーザー」が正しくない場合の処理
292
+
293
+ end
294
+
133
- ```
295
+ ```