2012-07-21 8 views
7

मेटा टैग जैसे मेरे सभी 'पेज ओपन' आइटमों को संभालने के लिए मेरे पास सिनात्रा में एक हैमल आंशिक है।मैं सैनात्रा में हैमल आंशिक के साथ स्थानीय (या प्रति दृश्य) चर का उपयोग कैसे कर सकता हूं?

मुझे इस आंशिक में पृष्ठ_शीर्षक के लिए एक चर होना चाहिए और उसके बाद उस चर को प्रति दृश्य सेट करना होगा। आंशिक में

कुछ इस तरह:

%title @page_title 
तब ध्यान में रखते हुए

, की तरह कुछ करने के लिए अनुमति दी जानी:

@page_title = "This is the page title, BOOM!" 

मैं प्रश्न/पोस्ट, आदि का एक बहुत पढ़ा है लेकिन मैं नहीं जानता कि समाधान के लिए कैसे पूछना है कि मैं क्या करने की कोशिश कर रहा हूं। मैं रेल से आ रहा हूं जहां हमारे देवताओं ने आमतौर पर content_for का उपयोग किया लेकिन वे इसे सब कुछ सेट करते हैं। मैं वास्तव में यह सीखने की कोशिश कर रहा हूं कि यह कैसे काम करता है। ऐसा लगता है कि मुझे इसे परिभाषित करना है और इसका उपयोग करना है: स्थानीय लोगों को किसी भी तरह से लेकिन मैंने इसे समझ नहीं लिया है। किसी भी सुझाव के लिए अग्रिम धन्यवाद!

उत्तर

12

आप इस तरह सिनात्रा haml partials में चर पारित:

page.haml

!!! 
%html{:lang => 'eng'} 
    %body 
     = haml :'_header', :locals => {:title => "BOOM!"} 

_header.haml

%head 
     %meta{:charset => 'utf-8'} 
     %title= locals[:title] 

एक पृष्ठ शीर्षक के मामले में मैं बस की तरह कुछ करना यह मेरे लेआउट में बीटीडब्ल्यू:

layout.haml

%title= @title || 'hardcoded title default' 

फिर मार्गों में @ शीर्षक के मान को सेट करें (एक सहायक के साथ इसे छोटा रखने के लिए)।

लेकिन अगर आपके शीर्षक एक आंशिक है तो आप को जोड़ सकते हैं दो उदाहरण की तरह:

layout.haml

!!! 
%html{:lang => 'eng'} 
    %body 
     = haml :'_header', :locals => {:title => @title} 

_header.haml

%head 
     %meta{:charset => 'utf-8'} 
     %title= locals[:title] 

app.rb

helpers do 
    def title(str = nil) 
    # helper for formatting your title string 
    if str 
     str + ' | Site' 
    else 
     'Site' 
    end 
    end 
end 


get '/somepage/:thing' do 
    # declare it in a route 
    @title = title(params[:thing]) 
end 
+1

बहुत बहुत धन्यवाद, बहुत बहुत यह आर! –

संबंधित मुद्दे

 संबंधित मुद्दे