LoginSignup
3
1

More than 3 years have passed since last update.

RailsのViewで共通の部分をページによって表示させたりさせなかったりする。

Last updated at Posted at 2020-07-19

RailsでView作っているときに、nav-barやside-barは共通部分なので部分テンプレートで書き出してrenderメソッド使うと思いますが、今回トップページにはそれを入れたくないけど、それ以外には全部入れたいみたいな時の対処法です。

今回の実装に至ったきっかけ

  • トップページはオシャレな感じにしたい!上とか横にガチャガチャいらない!
  • でも他のページには便利なので入れたい!

ということでトップページ(今回はhomesコントローラーとします)からnav-barとside-barを消す、というか表示させない方法です。

使用するコントローラーによって条件分岐する

使用するコントローラー名を取得するメソッドは
controller.controller_name
で取得できます。
これによって、条件分岐をapplication.html.erbに書いていきます。

application.html.erb
<!DOCTYPE html>
<html>
  <head>
    <title>Hoge</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

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

  <body>
    <% if controller.controller_name != 'homes' %>%
      <%= render '/layouts/navbar' %>
      <%= render '/layouts/sidebar' %>
    <% end %>
    <%= yield %>
    <%= render '/layouts/footer' %>
  </body>
</html>

アクション名も取得できる

controller.action_name
でアクション名を指定できます。
if controller.action_name=="new"(以下略)
みたいな感じで。

これを使えば同じ画面で登録する、更新する、と言ったボタンのテキストだけを変えることなどもできます。

参考にした記事

3
1
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
3
1