【问题标题】:Pass a variable to template in Middleman 2在 Middleman 2 中将变量传递给模板
【发布时间】:2012-03-25 14:44:15
【问题描述】:

我有一个中间人项目,我需要模拟登录用户。

足够简单 - 在 config.rb 中设置一些全局变量(如 @user = 1)就可以了,为登录用户编写所有代码,然后将变量设置为 0 并为注销用户编写所有代码无处不在

我不是 Ruby 编码员,所以我不知道在哪里挂钩。 那么:如何在中间人的 config.rb 中设置全局应用变量?

【问题讨论】:

  • Middleman 是一个静态站点生成器。登录是什么意思?
  • 我写道:模拟登录用户。然后我在下一句中解释了它。我需要在config.rb中定义一个变量,然后make对模板可见。

标签: ruby middleman


【解决方案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 %>

【讨论】:

  • 感谢您的亮点。这些直接转到config.rb,对吗?但实际上我需要的更简单一些 - 我希望在所有模板中都能看到这个 var。实际上它主要用于布局:页眉和页脚对于登录/注销的用户是不同的,我将在两者中都有 if。然后我(和其他编码人员)将切换 config.rb 中的变量并以 2 种模式查看站点。
  • 看起来,(目前)不适用于 Middleman 4 beta 2。
猜你喜欢
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 2017-11-10
  • 2019-04-03
  • 2011-05-08
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多