2009-07-28 15 views
11

Ho iniziato con HAML e sto lavorando alla conversione del mio primo file. Il apparentemente corretta omissione del "- end":ERB vs conversione HAML di una condizione if?

- if current_user 
= link_to 'Edit Profile', edit_user_path(current_user.id) 
= link_to 'Logout', logout_path 
- else 
= link_to 'Register', new_user_path 
= link_to 'Login', login_path 

mi fa:

app/views/layouts/application.html.haml:28: syntax error, unexpected kENSURE, expecting kEND 
app/views/layouts/application.html.haml:30: syntax error, unexpected $end, expecting kEND 

Mentre la logica

- if current_user 
= link_to 'Edit Profile', edit_user_path(current_user.id) 
= link_to 'Logout', logout_path 
- else 
= link_to 'Register', new_user_path 
= link_to 'Login', login_path 
- end 

mi fa:

You don't need to use "- end" in Haml. Use indentation instead: 
- if foo? 
    %strong Foo! 
- else 
    Not foo. 

Come ottengo questo conditi dichiarazione ufficiale funzionante in HAML?

+2

hai la risposta nella tua domanda .... Il messaggio di errore ti dice esattamente cosa fare. – nitecoder

risposta

21

HAML è basato su indentazione e il parser può essere complicato. Sostituire

- if current_user 
= link_to 'Edit Profile', edit_user_path(current_user.id) 
= link_to 'Logout', logout_path 
- else 
= link_to 'Register', new_user_path 
= link_to 'Login', login_path 

con

- if current_user 
    = link_to 'Edit Profile', edit_user_path(current_user.id) 
    = link_to 'Logout', logout_path 
- else 
    = link_to 'Register', new_user_path 
    = link_to 'Login', login_path 

e fare un tentativo. Si noti come il rientro è cambiato sul link_to lines.

+0

"Rientro incoerente: sono stati utilizzati 5 spazi per il rientro, ma il resto del documento è rientrato con 2 spazi". Non mi è piaciuto. :( –

+1

Stai indentando troppi spazi - o troppo pochi.Potete pubblicare il vostro intero modello? –

+0

Ho dato un'altra occhiata alla spaziatura e penso che avevate ragione. Penso di aver corretto il rientro ma ora sto ottenendo questo : /app/models/user_session.rb:5: errore di sintassi, inaspettata '<' ^ /app/models/user_session.rb: 8: errore di sintassi, tIDENTIFIER imprevisto, in attesa di $ end ^ Cosa mi manca? –

3
- if current_user 
    = link_to 'Edit Profile', edit_user_path(current_user.id) 
    = link_to 'Logout', logout_path 
- else 
    = link_to 'Register', new_user_path 
    = link_to 'Login', login_path 
Problemi correlati