前提・実現したいこと
現在SNSのようなアプリをrailsで作っています。
_formのような物を使い投稿画面を実装するなどの部分テンプレートの使い方はできているのですが、
・ヘッダー、フッターが思い通りの部分テンプレートになってくれない
・application.html.erbに直接書いてしまうと投稿画面などで表示されてしまう。
の2点の問題で実装が止まってしまっています。
実現したいことはタイトルと上記の通りです。
発生している問題・エラーメッセージ
ActionView::MissingTemplate in Posts#index Showing /Users/mono/projects/rank_top/app/views/layouts/application.html.erb where line #19 raised: Missing partial shared/_header with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}. Searched in: * "/Users/mono/projects/rank_top/app/views" * "/Users/mono/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/devise-4.7.3/app/views" * "/Users/mono/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/actiontext-6.0.3.4/app/views" * "/Users/mono/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/actionmailbox-6.0.3.4/app/views"
renderを用いなければエラーは起こりませんが、全画面でヘッダーが表示されてしまいます。
該当のソースコード
Ruby
1 2shared_header.html.erb 3 4<header class="header"> 5 <button type="button" class="btn btn-primary btn-lg btn-block"> 6 <%= link_to "Rank Top",root_path, method: :get %> 7 </button> 8 <%# ここはあとでロゴをかく %> 9 10 <div class="jumbotron jumbotron-fluid"> 11 <div class="container"> 12 13 14 15 <% if user_signed_in? %> 16 17 18 <div class="d-flex justify-content-around"> 19 20 <button type="button" class="btn btn-outline-primary"><%= link_to current_user.name, user_path(current_user) %></button> 21 <button type="button" class="btn btn-outline-primary"><%= link_to "ログアウト", destroy_user_session_path, method: :delete %></button> 22 <button type="button" class="btn btn-outline-primary"><%= link_to "投稿する",new_post_path, method: :get %></button> 23 <button type="button" class="btn btn-outline-primary"><%= link_to "TOPページへ",root_path, method: :get %></button> 24 25 <% else %> 26 27 <h1 class="display-4">Rank Topへようこそ!ゲストさん</h1> 28 <p class="lead">ここではあなたが日常や趣味の中で思った「個人的ランキング」を投稿して同じ感性を持った人から共感を得られます!</p> 29 30 <button type="button" class="btn btn-outline-primary"><%= link_to "ログイン",user_session_path %></button> 31 <button type="button" class="btn btn-outline-primary"><%= link_to "新規登録",new_user_registration_path %></button> 32 33 <% end %> 34 </div> 35 36 </div> 37 </div> 38</header>
Ruby
1 2application.html.erb 3 4<!DOCTYPE html> 5<html> 6 <head> 7 <title>Rank Top</title> 8 <%= csrf_meta_tags %> 9 <%= csp_meta_tag %> 10 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 11 12 <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css"> 13 14 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> 15 16 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 17 <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> 18 19 </head> 20 21 <body> 22 <%= render "shared/header"%> 23 24 25 26 <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> 27 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> 28 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> 29 <%= yield %> 30 </body> 31</html>
試したこと
renderを用いること、application.html.erbに直接書き込むことは試してみました。
初学者のため質問が低レベルで申し訳ないのですが、ご教授願えましたら幸いです。
自力でもなんとか解決策を模索し続けます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。