如何在所有Liquid模板中提供值

时间:2011-03-13 04:42:10

标签: ruby templates sinatra liquid

我正在使用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>

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

1 个答案:

答案 0 :(得分:3)

这样的东西会起作用

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

然后在你的模板中:

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