Отдельный layout для action в контроллере Ruby on Rails.
В рамках одного контроллера можно использовать несколько layout'ов.
Чаще всего случается, что некоторые экшены в рамках контроллера доступны только админу и соответственно хочется использовать другой лейаут.
Чтобы выбрать нужный layout, удобно использовать case:
Чаще всего случается, что некоторые экшены в рамках контроллера доступны только админу и соответственно хочется использовать другой лейаут.
Чтобы выбрать нужный layout, удобно использовать case:
class NotesController < ApplicationController ... layout :resolve_layout ... def resolve_layout case action_name when "new", "edit" "admin" else "application" end end ... end
Концепция проста - создаем метод, который в зависимости от текущего action_name будет отдавать строку с нужным нам контроллером.
В данном примере, создавать и редактировать Note будем в админском лэйауте. Все остальные экшены будут использовать стандартный - application.
Стоит отметить, что резолвить имя лэйаута можно любым удобным способом (например проверять через if соответствие имени action_name со строкой).
В данном примере, создавать и редактировать Note будем в админском лэйауте. Все остальные экшены будут использовать стандартный - application.
Стоит отметить, что резолвить имя лэйаута можно любым удобным способом (например проверять через if соответствие имени action_name со строкой).