2011-03-13 2 views
3

J'utilise Liquid avec Sinatra et j'aimerais faire une certaine valeur (Sinatra::Application.environment, spécifiquement) disponible dans tous les modèles sans la définir comme locale dans chaque get/post. Comme si:Comment rendre une valeur disponible dans tous les modèles liquides

En app.rb (mon principal dossier de candidature):

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

Dans app.rb - mon principal dossier de candidature, ou quelque chose que je peux exiger/include:

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

en tout modèle:

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

<!-- or even --> 

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

Je ne me soucie pas vraiment de la mise en œuvre tant que je ne dois pas mettre le code redondant chaque itinéraire. Merci d'avance!

Répondre

3

Quelque chose comme cela fonctionnera

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

puis dans votre modèle:

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