Layout là "wrapper" HTML chứa phần chung của trang (header, footer, nav).
Mặc định mọi action dùng app/views/layouts/application.html.erb.
erb
<%# app/views/layouts/application.html.erb %>
<!DOCTYPE html>
<html>
<head>...</head>
<body>
<%= yield %> <%# nội dung của từng action render vào đây %>
</body>
</html>Chọn layout theo controller:
ruby
class AdminController < ApplicationController
layout "admin" # dùng app/views/layouts/admin.html.erb
end
# Hoặc điều kiện:
class PostsController < ApplicationController
layout :choose_layout
private
def choose_layout
current_user&.admin? ? "admin" : "application"
end
endDùng render layout: false để render không có layout (API response JSON).