2009-07-28 16 views
11

Estoy comenzando con HAML y estoy trabajando en la conversión de mi primer archivo. La omisión ostensiblemente correcta del "- final":ERB vs HAML conversión de una condición 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 

me pone:

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 

Mientras que la lógica

- 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 

me obtiene:

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

Cómo obtengo esta condición declaración onal trabajando en HAML?

+2

Usted tiene la respuesta en su pregunta .... El mensaje de error que dice exactamente qué hacer. – nitecoder

Respuesta

21

HAML está basado en sangrías, y el analizador puede ser complicado. Reemplazar

- 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 

y darle una oportunidad. Observe cómo ha cambiado la sangría en las líneas link_to.

+0

"Indentación inconsistente: se usaron 5 espacios para la sangría, pero el resto del documento se sancionó con 2 espacios". No me gustó. :( –

+1

Estás sangrando demasiados espacios, o muy pocos. ¿Puedes publicar toda tu plantilla? –

+0

Eché otro vistazo al espacio y creo que estabas en lo cierto. Creo que he corregido el sangrado, pero ahora estoy obteniendo este : /app/models/user_session.rb:5: error de sintaxis, inesperado '<' ^ /app/models/user_session.rb: 8: error de sintaxis, inesperado tIDENTIFIER, esperando $ end ^ ¿Qué me estoy perdiendo? –

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