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.

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top