2009-07-28 6 views
11

Je commence avec HAML et je travaille sur la conversion de mon premier fichier. L'omission ostensiblement correcte du "- fin":Conversion ERB vs HAML d'une condition 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 fait:

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 

Alors que la logique

- 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 reçoit:

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

Comment est-ce que j'obtiens ce conditi déclaration onal travaillant dans HAML?

+2

Vous avez la réponse à votre question .... Le message d'erreur vous dit exactement ce qu'il faut faire. – nitecoder

Répondre

21

HAML est basé sur l'indentation, et l'analyseur peut être difficile. Remplacer

- 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 

avec

- 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 

et essayer. Remarquez comment l'indentation a changé sur les lignes link_to.

+0

"Indentation incohérente: 5 espaces ont été utilisés pour l'indentation, mais le reste du document a été indenté en utilisant 2 espaces." Il n'a pas aimé. : –

+1

Vous indiquez quelque chose de trop d'espaces - ou trop peu Pouvez-vous poster votre modèle entier? –

+0

J'ai regardé de nouveau l'espacement et je pense que vous aviez raison.Je pense que j'ai corrigé l'indentation mais maintenant je reçois ce : /app/models/user_session.rb:5: erreur de syntaxe, unexpected '<' ^ /app/models/user_session.rb: 8: erreur de syntaxe, inattendu tIDENTIFIER, attendez $ end ^ Qu'est-ce qui me manque? –

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