【问题标题】:How to make a value available in all Liquid templates如何使值在所有 Liquid 模板中可用
【发布时间】:2011-03-13 04:42:09
【问题描述】:

我正在将 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>

只要我不必在每条路由中添加冗余代码,我就不会真正关心实现。提前致谢!

【问题讨论】:

    标签: ruby templates sinatra liquid


    【解决方案1】:

    这样的事情会起作用

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

    然后在您的模板中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多