🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

2回答

815閲覧

部分テンプレートを用いてヘッダー・フッターを作り、投稿画面やユーザーページでは非表示にしたい。

Pro01x19

総合スコア17

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/12/08 04:10

編集2020/12/08 04:25

前提・実現したいこと

現在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に直接書き込むことは試してみました。
初学者のため質問が低レベルで申し訳ないのですが、ご教授願えましたら幸いです。
自力でもなんとか解決策を模索し続けます。

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

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

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

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

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

guest

回答2

0

自己解決

_headerをpartialという新しいファイルに移動させたら上手く行きました。
何故上手く行ったのかわかる方いたら教えてください

投稿2020/12/08 07:32

Pro01x19

総合スコア17

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

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

0

_header.html.erb

sharedフォルダ内に存在しているかご確認下さい。

投稿2020/12/08 04:21

tomtomtomtom

総合スコア563

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

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

Pro01x19

2020/12/08 04:24

回答ありがとうございます。 記載が甘く申し訳ございません。上記のコードはshared内の_header.html.erbという意味でした、 修正しておきます
tomtomtomtom

2020/12/08 11:44

自己解決されたようでなによりです^^ また機会がありましたら宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問