前提・実現したいこと
renderメソッドを用いて、「_post.html.erb」というファイルを
「index.html.erb」へ部分テンプレートとして呼び出したい。
↓index.html.erb
<% @posts.each do |post| %> <%= render partial: "posts/post", locals: { post: post } %> <% end %>
↓_post.html.erb
<div class="content"> <div class="content__left"> <div class="content__left--image"></div> </div> <div class="content__right"> <div class="content__right__top"> <%= link_to post.title, post_path(post.id), class: "content__right__top--title" %> </div> <div class="content__right__bottom"> <div class="content__right__bottom--userName"> <%= link_to post.user.nickname, user_path(post.user), class: "content__right__bottom--userName--btn" %> </div> <div class="content__right__bottom--date"> <%= post.created_at %> </div> </div> </div> </div>
しかし、
下のURLのように「ActionView::MissingTemplate in Posts#index」とエラーが出てしまう。
https://gyaz![イメージ説明](11d4dbb5ba227156dc3894ff5e8e251e.png)
発生している問題・エラーメッセージ
ブラウザのエラー内容からして、テンプレートが見つからない、
つまり実装したrender関連のコードが何かしらの理由で呼び出せていない状態かと思われる。
調べたこと
同じteratailの質問にrenderメソッドを用いた類似のものがあり、
そこではlink_toメソッドで呼び出して解決したが、
これは「ページを繋げる」場合であり、同じファイル同士の紐付けでも部分テンプレートとは異なる。
その他もしらべたが、有益な情報が見つからなかった。
どなたかご教授して頂けると幸いです。
よろしくお願い致します。
追記1
回答者さんからのご指摘があり、
index.html.erb内に記述したrender関連のコードの部分テンプレート名を
「posts/post」から「post」にしてみました。
↓index.html.erb
<% @posts.each do |post| %> <%= render partial: "post", locals: { post: post } %> <% end %>
しかし、画面は変わらないかったため他に原因があるようです。
追記2
回答者さんからのご指摘があり、
ディレクトリ構造の詳細について付け加えます。
https://gyazo.com/1a9bda2bc31be3f178aa9fae31dc6813
「index.html.erb」、「_post.html.erb」はともにapp/views/post内にあります。