Domanda

Sto cercando di passare ad utilizzare HAML per le mie opinioni, ma io continuo a ricevere messaggi KENSURE inaspettati. Ho usato html2haml di passare file di visualizzazione di lavoro. Prima esecuzione attraverso di essa mi ha detto che non avevo bisogno alla fine che html2haml ha avuto nella sua uscita in modo ho rimosso e ora ricevo errori che assomigliano esso si lamenta il modulo non viene terminato.

Che cosa sto facendo di sbagliato?

messaggio di errore:

compile error
app/views/sessions/new.html.haml:20: syntax error, unexpected kENSURE, expecting kEND
app/views/sessions/new.html.haml:22: syntax error, unexpected $end, expecting kEND

application.html.haml:

!!!
%html
%head
  %title
    = APP_CONFIG[:site_name] + ': ' + @page_title  
  == <meta http-equiv="content-type" content="text/xhtml; charset=utf-8" />
  == <meta http-equiv="imagetoolbar" content="no"  />
  == <meta name="distribution" content="all" />
  == <meta name="robots" content="all"  />
  == <meta name="resource-type" content="document" />
  == <meta name="MSSmartTagsPreventParsing" content="true"   />
  = stylesheet_link_tag 'base'
  = javascript_include_tag :defaults

  %body
    #container
      #header
        - if logged_in?
          = link_to 'Logout', logout_path
        - else
          = link_to 'Login', login_path
          = link_to 'Signup', signup_path
      #content
        = flash_messages
        = yield :layout

e sessioni / new.html.haml

= title "Login", :h2
- form_tag session_path do
%fieldset
  %legend
    Your Details
  %ol
    %li
      = label_tag 'login', 'Username'
      = text_field_tag 'login', @login
    %li
      = label_tag 'password'
      = password_field_tag 'password', nil
    %li
      = label_tag 'remember_me', 'Remember me'
      = check_box_tag 'remember_me', '1', @remember_me
.buttons
  = submit_tag 'Login'
  = link_to 'Forgotten Password', forgot_password_path
È stato utile?

Soluzione

Questa è una cosa Haml fa quando hai ottenuto il tuo spaziatura sbagliato. html2haml fa la maggior parte del lavoro per voi, ma è comunque necessario rivedere le modifiche. Il problema in sessioni / new.html.haml è che si stanno iniziando un blocco do senza contenuti:

- form_tag session_path do
%fieldset

L'intero fieldset deve essere nidificata (rientrato) all'interno del blocco do. Perché non c'è nessun contenuto a tutti, Haml non riesce a mettere in una dichiarazione end, in modo che quando il file viene interpretato, si ottiene:

unexpected $end, expecting kEND

che significa "mi ha colpito alla fine del file ($ end), mi aspettavo la parola fine (KEND)"

Altri suggerimenti

Come mostrato, il primo blocco è rientrato% corpo unico piano superiore testa% e% testa allo stesso livello come% html, nessuno dei quali è buono. Se funziona, si può ottenere qualcosa di simile

<html>
</html>
<head>
  ...
  <body>
  ...
  </body>
</head>

Credo che la maggior parte dei browser soffocare su questo! ; -)

In generale io non sono un fan di html2haml, che anche se si sforza non sembra essere in grado di gestire tutto. Se non avete un serio grossa pila di file di visualizzazione, sarei propenso a spendere il tempo rielaborazione dei file a mano. Non c'è bisogno di fare tutto in una volta, perché non solo tradurli come si va? Imparerete molto di più su HAML in questo modo, anche. Basta che - si spera -. Troverete tutta la rientranza cosa diventa istintiva, dopo di che inizia ad accelerare il progresso

HAML si comporta molto male con problemi come le schede, invece di spazi bianchi, e il rientro non corretta.

La mia soluzione (almeno su OSX utilizzando TextMate) è quello di utilizzare TextMate, hanno il HAML / SASS fascio installato. Poi io uso CMD- [per annullare il rientro del testo, seguito da CMD-] di ri-trattino il testo in modo corretto. Che elimina eventuali schede invisibili e indentazione corretta, più rivela eventuali problemi strutturali.

Una caratteristica sottoutilizzate è la modalità di ERB html2haml.

html2haml -e < input.html > output.html.haml

Usando solo -e sarà ottenere il vostro HAML circa il 95% della strada lì piuttosto che il 50% utilizzando html2haml puro

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