<% post.each do |p| %>
<%= p.text %>
みたいな感じでeach文を回して要素を一つずつ表示した際に
undefined method `each' for というエラーが発生
エラーの原因
post.eachのpostにpostオブジェクトが渡されていたこと
eachは配列の要素の数だけブロックを繰り返し実行する
すなわち、postオブジェクトの配列を渡してあげれば解決
流れ
posts_contorller.rb
@post = Post.find(params[:id])
パラメーターで送られてきたpostをfindで取り出して@postへ代入
qiita.rb
<%= render partial: 'posts/post', locals: { post: @post } %>
@postを部分テンプレート先でpostというローカル変数で使用
qiita.rb
<% post.each do |p| %>
postをpへ代入して要素の数だけ表示
修正部分
before
posts_contorller.rb
@post = Post.find(params[:id])
findメソッドは条件に合致するオブジェクトを取り出す
after
posts_contorller.rb
@post = Post.where(id: params[:id])
whereメソッドは条件に合致するオブジェクトを配列として取り出す
要するにeachには配列を渡しましょうということです
参考