ActionView::MissingTemplate in Posts#new
Q&A
解決したいこと
例)
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"
該当するソースコード
<!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>
<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