回答編集履歴

1

追加の質問の回答を追記した

2020/09/08 07:00

投稿

necocoa
necocoa

スコア209

test CHANGED
@@ -59,3 +59,67 @@
59
59
 
60
60
 
61
61
  なにか他にわからない点がありましたらスレッドにて再度質問をお願いします。
62
+
63
+
64
+
65
+ ###### 追記
66
+
67
+
68
+
69
+ 同ファイル(編集リンク箇所)
70
+
71
+ `<% if current_user.id == @post.user_id %>`
72
+
73
+ こちらが@postではなく、postになります。
74
+
75
+ なので、こちらに修正すればeditが表示されるかと思います!
76
+
77
+ `<% if current_user.id == post.user_id %>`
78
+
79
+
80
+
81
+ みやすさのためrubyだけのコードにしてみます(実際はlink_toはerb内でしか使えません)
82
+
83
+
84
+
85
+ ```ruby
86
+
87
+ @posts.each do |post|
88
+
89
+ if current_user.id == @post.user_id
90
+
91
+ link_to "edit", edit_topic_post_path(post.id), method: :get %>
92
+
93
+ end
94
+
95
+ end
96
+
97
+ ```
98
+
99
+
100
+
101
+ eachでpostsをループしており、postという変数に代入しています。
102
+
103
+ そのpostのuserが自分かどうかをif文で判定しています。
104
+
105
+ `if current_user.id == @post.user_id`
106
+
107
+ その部分を@postにしています。
108
+
109
+ これはeachで渡したpostとは全く別の変数と認識されています。
110
+
111
+
112
+
113
+ 以前までは `@post = Post.find(params[:id]`というコードが合ったため@postのデータが存在しeditが表示されておりました。
114
+
115
+ しかし前述したとおり、これは本来対象とするpostではないです。
116
+
117
+
118
+
119
+ また、1つの@postのデータのため以前のコードでは、
120
+
121
+ 「複数のpostが作成されていて、editが表示されていても」すべて同じpostのeditになっていたはずです。
122
+
123
+
124
+
125
+ これからは@がつくインスタンス変数と、なにもつかないローカル変数を注意してみてみると良いと思います。