如何使值在所有 Liquid 模板中可用

发布于 2024-10-22 05:31:54 字数 728 浏览 1 评论 0原文

我正在将 Liquid 与 Sinatra 结合使用,并希望在所有模板中都可以使用某个值(特别是 Sinatra::Application.environment),而无需在每个 get/post 中将其定义为本地值。像这样:

在 app.rb (我的主应用程序文件)中:

# nothing in here about the variable
get '/some/route' do
  # or here
  liquid :my_template
end

在 app.rb - 我的主应用程序文件中,或者我可以要求/包含的内容:

some_awesome_technique do
  def app_env
    Sinatra::Application.environment
  end
end

在任何模板中:

<p>
  {% if environment == :development %}
    Never see this in production
  {% end %}
</p>

<!-- or even -->

<p>
  {% if dev_mode %}
    Or this...
  {% endif %}
</p>

我并不真正关心实现,只要我不必在每条路线中放置冗余代码。提前致谢!

I'm using Liquid with Sinatra and would like to make a certain value (Sinatra::Application.environment, specifically) available in all templates without defining it as a local in every get/post. Like so:

In app.rb (my main application file):

# nothing in here about the variable
get '/some/route' do
  # or here
  liquid :my_template
end

In app.rb--my main application file, or something I can require/include:

some_awesome_technique do
  def app_env
    Sinatra::Application.environment
  end
end

In any template:

<p>
  {% if environment == :development %}
    Never see this in production
  {% end %}
</p>

<!-- or even -->

<p>
  {% if dev_mode %}
    Or this...
  {% endif %}
</p>

I don't really care about the implementation as long as I don't have to put redundant code in every route. Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

够钟 2024-10-29 05:31:54

这样的事情就会

before do
  @env = Sinatra::Application.environment
end

在你的模板中起作用:

{% if @env == :development %}
  Boo!
{% endif %}

Something like this will work

before do
  @env = Sinatra::Application.environment
end

then in your template:

{% if @env == :development %}
  Boo!
{% endif %}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文