По умолчанию layouts/application.html.haml
(.erb
, если вы не используете haml).
Фактически, файл макета может быть установлен для каждого контроллера или для каждого действия, а не для каждого представления, для каждой папки представления.
Существует несколько случаев:
Чтобы изменить файл макета по умолчанию для всех контроллеров (т. Е. Используйте another.html.haml
вместо application.html.haml
)
class ApplicationController < ActionController::Base
layout "another"
# another way
layout :another_by_method
private
def another_by_method
if current_user.nil?
"normal_layout"
else
"member_layout"
end
end
end
Для изменениявсе действия в определенном контроллере для использования другого файла макета
class SessionsController < ActionController::Base
layout "sessions_layout"
# similar to the case in application controller, you could assign a method instead
end
Чтобы изменить действие для использования другого файла макета
def my_action
if current_user.nil?
render :layout => "normal_layout"
else
render :action => "could_like_this", :layout => "member_layout"
end
end