質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

4532閲覧

renderが原因で「ActionView::MissingTemplate in Posts#index」のエラー

Wingmacbook

総合スコア17

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/08/29 09:21

編集2020/10/23 09:54

前提・実現したいこと

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内にあります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/08/29 09:54

タグが「HTML」だけだと応えられる人はいないと思います。
necocoa

2020/09/09 04:03

ディレクトリ構造に問題があるのかもしれません。 viewのディレクトリ構造の情報を追記してください
guest

回答2

0

タグ に Rails も追加した方が良いですね。
postsのviewからのrender呼び出しですと、
render partial: "posts/post"render partial: "post"も同じです。
これで見つからないのは不思議ですが、念の為
app/views/posts/_post.html.erb にありますね?

気になるのが一点、Rails.rootが "kotsu-kotsu dialy" と空白がはいっています。これが悪さしているかもしれません。
mv "kotsu-kotsu dialy" kotsu-kotsu-dialy
してみてください

投稿2020/09/09 13:23

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

<%= render partial: "post", locals: { post: post } %>

postsが余計だと思います。

投稿2020/08/29 23:42

nasuk47

総合スコア311

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問