Если у вас есть разные файлы шаблонов, вы можете использовать content_for
в них (см. руководство по макетам и шаблонам ), чтобы установить идентификатор в файле макета, или просто придерживаться params[:action]
(должно достаточно - выбор шаблона основан на вызываемом действии).
Вы можете сделать универсальный before_filter
для всех (или не всех) действий с помощью
before_filter :set_id_for_body, :only => [...]
def set_id_for_body
@body_id = params[:action]
end
Всегда думай, как сохранить свой код СУХИМ!
EDIT:
Вы можете определить хеш, который свяжет действия с соответствующими шаблонами:
ActionClasses = {
:update => "show",
:show => "show,
:new => "new",
:edit => "new",
...
}
В вашем файле макета просто добавьте
<body id="<%= ActionClasses[params[:action]] %>">
EDIT:
Возможно получить доступ к шаблону с помощью метода ActionBase::template
, но он не будет работать так, как вы хотели бы. Если вы вызовете метод filename
или name
в файле макета, вы получите путь к файлу макета, а не к шаблону. AFAIK Невозможно проверить, какой шаблон визуализируется, так как несколько из них могут использоваться для визуализации одного действия.