기본 layout 위치
app/views/layouts/application.html.erb
기본 코드
<!DOCTYPE html>
<html>
<head>
<title>MyApp</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= yield :head %>
</head>
<body>
<%= render "shared/header" %>
<main>
<%= yield %>
</main>
<%= render "shared/footer" %>
</body>
</html>
View 에서 slot 만들기
<% content_for :sidebar do %>
<p>사이드 메뉴</p>
<% end %>
Controller에서 Layout 선택하기
class ApplicationController < ActionController::Base
end
→ application.html.erb 자동 사용됨.
특정 Controller에서 변경
class AdminController < ApplicationController
layout "admin"
end
app/views/layouts/admin.html.erb
조건부 layout
layout :select_layout
private
def select_layout
user_signed_in? ? "application" : "guest"
end
다중 Layout 설계 패턴 (실무)
layouts/
├─ application.html.erb # 일반 사용자
├─ admin.html.erb # 관리자
└─ guest.html.erb # 로그인 전
Layout + Partial의 이상적인 관계
<body>
<%= render "layouts/header" %>
<%= render "layouts/sidebar" %>
<%= yield %>
</body>
Layout과 Hotwire의 관계
<body>
<%= turbo_frame_tag "modal" %>
<%= yield %>
</body>
- 전역 Turbo Frame
- 전역 Turbo Stream 대상
반응형
'Ruby > Rails' 카테고리의 다른 글
| Rails 8 - Alpine.js 추가방법 (6) (0) | 2026.01.21 |
|---|---|
| Rails 8 - Layout 최적화 세팅 + Tailwindcss (5) (0) | 2026.01.21 |
| Rails 8 - Tailwind CSS 적용하기 (3) (0) | 2026.01.21 |
| Rails 8 - 프로젝트 생성하기 (2) (0) | 2026.01.21 |
| Rails 8 - 개발 환경 설정 (1) (0) | 2026.01.21 |