私はブログアプリケーションを作成しています。ユーザーが投稿のインデックスビューを表示しているときに、 。私は、次のエラーを取得しています:Ruby-On-Rails現在のユーザーだけが作成した投稿を編集して削除する方法
未定義のメソッドはnilのための `のuser_id」:NilClass
ビュー/ポスト/
<td><% if current_user.id == @post.user_id %></td>
<td><%= link_to 'Edit', edit_post_path(@post) %></td>
<td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
index.htmlを上記のみ編集をユーザーに許可する私のif文であります自分が作成した投稿を削除します。
post_controllerでメソッドを作成します。
def create
@post = Post.new(post_params)
@post.user = current_user
respond_to do |format|
if @post.save
format.html { redirect_to @post, notice: 'Post was successfully created.' }
format.json { render :show, status: :created, location: @post }
else
format.html { render :new }
form
at.json { render json: @post.errors, status: :unprocessable_entity }
end
end
end
慣例に従う場合は、おそらくインデックスアクションに '@ post'インスタンス変数がありません。あなたは '@ posts'を持っていて、' each'を使ってループします。つまり、 '@posts.each do | post |'です。ですから、インデックスビューで '@ post'を' post'に変更し、それが動作するかどうか確認してください。 – jvnill