Как я уже говорил выше, Rails игнорирует ваш параметр: for и должен просто использовать макет 'application' для всех действий.
Что касается рендеринга нескольких макетов, кажется, что вы можете иметь только одну layout ...
строку для вашего контроллера; если у вас есть кратные, он будет использовать только последний. И если последний имеет параметр :only
или :except
, он должен вернуться к макету application
для всех других действий. Если он неправильно использует макет application
и рендеринг без какого-либо макета, убедитесь, что предыдущий разработчик не поместил что-то вроде layout nil
где-то в вашем контроллере / приложении.
Если вы хотите обрабатывать несколько макетов внутри вашего контроллера, вы также можете попробовать это:
class UsersController < ApplicationController
layout :choose_layout
def choose_layout
if action_name == "edit"
"application"
else
"login"
end
end
end