8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[rails]navbarやヘッダーをTOPページのみ非表示にする

Posted at

概要

railsでオリジナルアプリ製作中に躓いた出来事。
下記の赤い枠で囲まれた部分を、部分テンプレートとして呼び出していました。
スクリーンショット 2020-10-14 21.51.51.png
※↑ユーザー登録画面、作成中なので見づらいです。。

トップページは以下のような構成で、ヘッダーを呼び出したくないので、どうしようかと考えてました。
スクリーンショット 2020-10-14 21.47.49.png
※↑オリジナルアプリのTopページ

部分テンプレートの呼び出し方

トップページ以外には全てヘッダーを表示させたいのでapplication.html.erbで部分テンプレートをレンダーしています。

application.html.erb
<!DOCTYPE html>
<html>
  <head>~省略~</head>
  <body>
    <%= render "shared/header" %> <%# ここでヘッダーを呼び出している。
    <%= yield %>
    <%= render "shared/footer" %>
  </body>
</html>

current_page?で場合分けしてみた

こちらの記事を参考に現在のページがtopページ(root_path)でない場合は、部分テンプレートを呼び出さないようにしてみた。

application.html.erb
<body>
  <% unless current_page?(root_path) %> <%# unlessで現在のページがrootなら呼び出さない
    <%= render "shared/header" %>
  <% end %>
  <%= yield %>
  <%= render "shared/footer" %>
</body>

まとめ

部分テンプレートを呼び出すページを指定する時に、コントローラーに記載したり
JavaScriptで呼び出すページを発火させたり、様々な手段がありそうですが
自分の場合は1ページのみ非表示なのでこのやり方が良いかなと思いました。

もしこの記載方法が推奨されてない理由などありましたら、ご指摘いただければと思います。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?