Usando Middleman, come si include un file HAML in un altro file HAML?
Domanda
Sto usando Middleman per fare un po 'di prototipazione rapida e non posso per la vita di me capire come includere un file HAML in un altro file HAML.
Posso includere cose in un file di layout, ma non riesco a ottenere un file non layout per includere un altro file non layout. Ci sono blocchi di HTML che voglio riutilizzare su alcune pagine e penso di poterlo fare. Ho provato:
- render: partial=>"shared/nav.haml"
=shared/nav.html
="shared/nav.html
E nessuno di questi funziona.
Mi manca un'opzione di configurazione o un plug -in? Questa è una nuova installazione di intermediario.
RISPONDERE
Parziali Maggio Hai bisogno di nomi di file che iniziano con un sottolineaggio. La mia parziale è collocata in una cartella chiamata condivisa. Il nome completo del file è _nav.html.haml
Questo ha funzionato per me.
!= haml :"shared/_nav"
Esempio nel contesto:
#email.main.subscriber.resize
#bg-wrap
%div
%img{:src=>"images/backgrounds/image.png",:alt=>""}
%section#zone10
!= haml :"shared/_nav"
È inoltre possibile utilizzare il formato specificato nella risposta approvata di seguito.
Soluzione
Ho usato Haml con intermediario e non potrei essere più felice. Ecco cosa funziona per me:
Ho un file: source/_donate_buttons.h
#DonationButtons
%p= t('searching.donate_cover_costs')
%br
= partial(:paypal_donate_button, :locals => {:amount => 1,
:amount_text => t('searching.donate_1')})
Questo utilizza l'istruzione parziale mostrata per includere un file chiamato source/_paypal_donate_button.html.haml
.
E includo il _donate_buttons.html.haml
si presenta in un paio di posti con:
= partial "donate_buttons"
Anche se penso che questo potrebbe anche essere:
= partial :donate_buttons
Cioè penso partial
è la magia che stai cercando.
E, solo per completezza, ecco un leggermente spogliato _paypal_donate_button.haml
Il che mostra come funziona la paramaterizzazione lì:
-btnclass = (locals.key?(:highlight) && locals[:highlight] ? "HighlightedDonationButton" : "DonationButton")
-btnstyle = locals.key?(:button_style) && locals[:button_style]
.DonationButtonContainer
%form{:action => "https://www.paypal.com/cgi-bin/webscr", :method => "post"}
%input{:name => "business", :type => "hidden", :value => "payments@example.com"}
%input{:name => "cmd", :type => "hidden", :value => "_donations"}
%input{:name => "amount", :type => "hidden", :value => "#{amount}.00"}
%input{:name => "currency_code", :type => "hidden", :value => "USD"}
%input{:class => btnclass, :alt => t('paypal.alt_text'),
:style => "cursor: pointer; font-size: 18px; #{btnstyle}", :type => "submit", :value => amount_text}
FWIW, non credo che il file debba essere _filename.html.haml
e può invece essere _filename.haml
. Inoltre, li ho localizzati, quindi ignora il t ('tagname') e metti le stringhe lì. (Non volevo introdurre un errore che lanciava gli esempi, quindi li ho lasciati lì dentro.)
Spero che sia di aiuto!