satosh_da
@satosh_da

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ActionView::MissingTemplate in Posts#new

解決したいこと

例)
Ruby on Railsで簡素Webアプリをつくっています。
記事を投稿する機能の実装中にエラーが発生しました。
解決方法を教えて下さい。どうぞよろしくお願い致します。

発生している問題・エラー

ActionView::MissingTemplate in Posts#new

Showing /Users/~/post_bootstrap_app/app/views/posts/new.html.erb where line #2 raised:

Missing partial posts/_form, application/_form with

{:locale=>[:ja], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}.

Searched in:

  • "/Users/~/post_bootstrap_app/app/views"
  • "/Users/~/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/actiontext-6.1.6.1/app/views"
  • "/Users/~/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/actionmailbox-6.1.6.1/app/views"

該当するソースコード

posts/_form.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title>PostBootstrapApp</title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= render "layouts/header" %>
    <%= render "layouts/flash" %>
    <%= yield %>
    
  </body>
</html>

new.html.erb
<h1>新規投稿</h1>
<%= render "form", button_value: "投稿" %>
  

自分で試したこと

以下を参考にした。
:https://ichigick.com/rails-error-summary/
:https://ichigick.com/missing-template-error/

問題はposts/new.html.erbにあるのではないかと考えた。
その上で


Missing template A#Bの意味について
横着すると、
ここでいう
1.templateは--.html.erbの意味であるから、html.erbのあるviewの下のディレクトリを意味していることにある。
2.A=posts.B=new.html.erbとすれば、A#Bは、(post_bootstrap_app/app/viewsの下にあることが省略)/posts/new(.html.erbの省略)の意味にある。
よって、post_bootstrap_app/app/views/posts/new.html.erbを見る。


次にMissing template A#Bは

  • render メソッドの呼び出しが間違えている
  • ビューファイルの配置場所やファイル名が間違えている
    エラーが大半であると言うことを確認。

renderメソッドの呼び出しの間違えている箇所を特定できませんでした。
ビューファイルの配置場所やファイル名は問題ないようにviewの該当箇所を確認した。
new.html.erbの前後関係が見えていないこと、renderの理解がおぼついていないのかと思っています。

views
-layoutsの下
| _error_message.html.erb
| _flash.html.erb
| _header.html.erb
| application.html.erb
| mailer.html.erb
| mailer.text.erb
|
-postsの下
| _form.html.erb
| edit.html.erb
| index.html.erb
| new.html.erb
| show.html.erb

0

2Answer

おそらく、エラーの意味を履き違えています。

Showing /Users/~/post_bootstrap_app/app/views/posts/new.html.erb where line #2 raised:

ここに、どこでエラーが発生しているのか書かれています。
そことActionView::MissingTemplateエラーの詳細(提示していただいた①②)を組み合わせたら、エラーの解決に近づくと思います。

0Like

Comments

  1. @satosh_da

    Questioner

    PCが故障しておりました、ご連絡が遅れ申し訳ありません。
    再度トライしてみたところ、該当箇所が動くようになりました。
    どうもありがとうございます。実際に作りながら、
    ある程度、型を覚えてしまおうと思います。

Comments

  1. @satosh_da

    Questioner

    ご回答ありがとうございます
    サーバーの再起動は何度も行いました。

Your answer might help someone💌