1
3

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 5 years have passed since last update.

Rails5でlayoutの切り替えで苦労したこと

1
Posted at

やろうとしたこと

  • Railsの公開ページで共通して適用するヘッダと、管理者ページで適用するヘッダをlayoutで切り替えようとした

環境

  • ruby 2.3.3
  • Rails 5.2.0

layout周りの実装

  • 公開ページはapplication_controller.rbを継承し管理者ページはadmin/apllication_controller.rbを継承したコントローラで制御
  • それぞれのapplication_controller.rbコントローラで適用するlayoutファイルを切り替え

公開画面

layout/application.html.slimを読み込む

layout 'application'

 管理画面

layout/admin/application.html.slimを読み込む

layout 'admin/application'

つまづいたこと

  • ログイン後とログイン前の画面でレイアウトが切り替わらないことがある
  • 不定期に発生する
  • キャッシュ周りの問題なのかも
  • 今回は問題なかったけどログイン後のユーザでヘッダを切り替えようとする実装があると、エラーを吐く

対処方法

  • admin/apllication_controller.rbadmin/base_controller.rbに名前を変更
  • クラス名もAdmin::ApplicationControllerからAdmin::BaseControllerに変更
  • admin以下のコントローラの継承をAdmin::BaseControllerに変更
  • base_controller.rbから呼び出すlayoutをadmin/base.html.slimに変更

思うと今回はゴリ押しにしか見えないけど、こんな感じにコントローラの名前を変えたらレイアウトが反映されないことがなくなった

明らかにベストプラクティスじゃないのでもっとかっこよく記述したい

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?