Передайте переменную в шаблон в Middleman 2

У меня есть проект Middleman, и мне нужно эмулировать вошедшего в систему пользователя.

Достаточно просто - было бы неплохо установить некоторую глобальную переменную, например @user = 1 в config.rb, закодировать все для вошедшего в систему пользователя, затем установить переменную в 0 и закодировать все для пользователя, вышедшего из системы, помещая if везде

Я не кодер Ruby, поэтому я не понимаю, где подключиться. Итак: как я могу установить глобальную переменную приложения в файле посредника config.rb?


person Guard    schedule 25.03.2012    source источник
comment
Посредник – это генератор статических сайтов. Что вы имеете ввиду под входом?   -  person Nash Bridges    schedule 25.03.2012
comment
Я написал: эмулировать вошедшего в систему пользователя. Затем я объяснил это в следующем предложении. Мне нужно определить переменную в config.rb, тогда make станет видимым для шаблона.   -  person Guard    schedule 26.03.2012


Ответы (1)


Вы можете установить переменную на определенных путях с помощью помощника page:

page "/my-page.html", :locals => { :is_logged_in => true }

Если вы хотите использовать один шаблон, который включает оператор if для обработки изменений содержимого на основе is_logged_in, вы должны использовать прокси-сервер страницы:

page "/my-page-logged-in.html", :proxy => "/my-page.html", :locals => { :is_logged_in => true }
page "/my-page-logged-out.html", :proxy => "/my-page.html", :locals => { :is_logged_in => false }

Для прямых переменных используйте set:

set :is_logged_in, true

В шаблоне:

<%= is_logged_in %>
person Thomas Reynolds    schedule 26.03.2012
comment
Спасибо за основные моменты. Они идут прямо в config.rb, верно? Но на самом деле мне нужно немного проще - я хочу, чтобы этот var был виден во всех шаблонах. На самом деле это в первую очередь нужно для макета: верхний и нижний колонтитулы разные для вошедших/вышедших пользователей, и у меня будет if's в обоих. Я (и другие кодеры) тогда переключаю переменную в config.rb и просматриваю сайт в 2-х режимах. - person Guard; 26.03.2012
comment
Не работает (в настоящее время) с Middleman 4 beta 2, как кажется. - person cseelus; 09.05.2015