Skip to main content

layout_variants_by_format

🎭 Layout Variants by Format​

Use view variants to automatically switch layouts based on format (e.g., :amp, :turbo_stream). Define variant-specific layouts by naming conventions and set request.variant in a middleware or controller.

# app/controllers/application_controller.rb
before_action do
request.variant = :amp if params[:amp] == '1'
end
<!-- app/views/layouts/application.html+amp.html.erb -->
<!DOCTYPE html><html><body>
<!-- AMP-optimized header -->
<%= yield %>
</body></html>

Rails will pick application.html+amp for AMP requests, falling back to application.html.erb otherwise. This keeps your code DRY and format-aware.