Question

Je suis en train de passer à l'aide HAML pour mon point de vue mais je continue à recevoir des messages de KENSURE inattendus. Je l'ai utilisé html2haml pour passer sur les fichiers de vue travail. D'abord par course, il m'a dit que je ne l'ai pas besoin de la fin que html2haml avait dans sa sortie donc je l'ai retiré et maintenant je reçois des erreurs qui ressemblent à ce se plaint de la forme pas terminée.

Qu'est-ce que je fais mal?

message d'erreur:

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

et sessions / 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
Était-ce utile?

La solution

Ceci est haml quelque chose ne lorsque vous avez obtenu votre espacement mal. html2haml fait la plupart du travail pour vous, mais vous avez encore passer en revue les changements. Le problème dans les sessions / new.html.haml est que vous commencez un bloc débrouillaient sans contenu:

- form_tag session_path do
%fieldset

doit être imbriquée L'ensemble fieldset (indenté) dans ce bloc do. Parce qu'il n'y a pas de contenu du tout, haml ne met pas dans une déclaration end, alors quand est interprété le fichier, vous obtenez:

unexpected $end, expecting kEND

qui signifie "je frappe la fin du fichier (fin de $), je me attendais le mot-clé end (kend)"

Autres conseils

Comme représenté, le premier bloc a% corps dentelé un niveau plus de% tête, et la tête% au même niveau en% html, aucun de ce qui est bon. Si cela fonctionne, vous pouvez obtenir quelque chose comme

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

Je pense que la plupart des navigateurs étouffer sur ce point! ; -)

En général, je ne suis pas fan de html2haml, qui, bien qu'il essaie dur ne semble pas être capable de gérer tout. Sauf si vous avez un tas sérieux grand nombre de fichiers de vue, je serais enclin à passer le temps à refaire les fichiers manuellement. Vous ne devez pas les faire à la fois, pourquoi ne pas simplement les traduire comme vous allez? Vous apprendrez beaucoup plus sur HAML cette façon, aussi. Assez que - nous l'espérons -. Vous trouverez toute chose indentation devient instinctive, après quoi le progrès commence à accélérer

HAML se comporte vraiment mal avec des problèmes comme les onglets au lieu de les espaces et le retrait incorrect.

Ma solution (au moins sur Mac OS X en utilisant TextMate) est d'utiliser TextMate, ont HAML / paquet SASS installé . Puis-je utiliser CMD- [à désindenter le texte, suivant par CMD-] pour réindenter le texte correctement. Cela se débarrasse de tous les onglets invisibles et indentation incorrecte, plus révèle des problèmes structurels.

Une caractéristique sous-utilisé est le mode ERB de html2haml.

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

Juste en utilisant -e obtenir votre HAML environ 95% du chemin au lieu de 50% en utilisant html2haml pur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top