Rails|レイアウトを新規で作成する
なにがしたい
Viewを表示する際に、「layout.html.erb」とは別のレイアウトを作成して適応したい。
シチュエーション
上記の方法でerror画面をカスタマイズすると、Viewに対応するコントローラーがないため、「Template Inheritance※」ができない。
そのため、error画面を出す際、メタ情報や読み込むCSSの内容が変わるためレイアウトを別に用意したい。
※ 例)errors配下に_meta.html.erb
を切り、application.html.erb内で以下のように呼び出す。
<%= render partial: 'meta' %>
HOW TO
1.view/layout/error_layout.html.erbを作成
2.application.controllerのエラーページをレンダリングしている箇所で、error_layout.html.erbを指定する
def render_404(exception = nil) if exception logger.info "Rendering 404 with exception: #{exception.message}" end render template: "errors/error_404", status: 404, layout: 'application' render template: "errors/error_404", status: 404, layout: "error_layout" #error_layout.html.erbを指定する end def render_500(exception = nil) if exception logger.info "Rendering 500 with exception: #{exception.message}" end render template: "errors/error_50x", status: 500, layout: 'application' render template: "errors/error_50x", status: 500, layout: "error_layout" #error_layout.html.erbを指定する end