Существует еще два варианта , которые фактически задает ОП:
# 1
в вашем макете:
- if flag ||= false
# variant 1
- else
# variant 2
в вашем контроллере приложения (это хитрость):
layout 'application' # or whatever
в любом контроллере:
render :locals => { :flag => true }
Я думаю, обработка макета происходит позже из-за "динамическое "(не совсем) layout
определение, которое генерирует необходимые методы для всех ключей внутри local_assigns
.Поэтому, возможно, переменная экземпляра является решением исполнителяЕсть мысли по этому поводу?Пожалуйста, оставьте комментарий.
# 2
Вы можете просто использовать переменную local_assigns
, например:
- if local_assigns[:flag] ||= false
# variant 1
- else
# variant 2
и затем в любом из ваших контроллеров:
render :locals => { :flag => true }