문제

내보기에 Haml 사용으로 전환하려고하지만 예상치 못한 Kensure 메시지를 계속 받고 있습니다. html2haml을 사용하여 작업보기 파일을 전환했습니다. 먼저 그것을 통해 html2haml이 출력에 가졌던 끝이 필요하지 않다고 말했기 때문에 그것을 제거하고 이제는 종료되지 않은 양식에 대해 불평하는 것처럼 보이는 오류가 발생합니다.

내가 뭘 잘못하고 있죠?

에러 메시지:

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

및 세션/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
도움이 되었습니까?

해결책

이것은 당신이 당신의 간격을 잘못했을 때 Haml이하는 일입니다. html2haml은 대부분의 작업을 수행하지만 변경 사항을 검토해야합니다. 세션/new.html.haml의 문제점은 콘텐츠가없는 작업 블록을 시작한다는 것입니다.

- form_tag session_path do
%fieldset

전체 필드 세트는 그 안에 중첩 (들여 쓰기)해야합니다. do 차단하다. 내용이 전혀 없기 때문에 Haml은 end 선언, 따라서 파일이 해석되면 다음과 같이받습니다.

unexpected $end, expecting kEND

"파일의 끝 ($ end)을 쳤을 때 최종 키워드 (kend)를 기대하고있었습니다."

다른 팁

도시 된 바와 같이, 첫 번째 청크는 %신체가 %헤드보다 한 레벨을 더 많이 들여 쓰고 %HTML과 동일한 수준에서 %헤드를 들여 보냈으며, 어느 쪽도 좋지 않다. 그것이 작동하면, 당신은 같은 것을 얻을 수 있습니다

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

나는 대부분의 브라우저가 그것을 질식시킬 것이라고 생각합니다! ;-)

일반적으로 나는 html2haml의 팬이 아닙니다.하지만 힘들어 지지만 모든 것을 다룰 수는 없습니다. 뷰 파일 더미가 심각하지 않으면 파일을 손으로 재 작업하는 데 시간을 보내는 경향이 있습니다. 한 번에 그들을 모두 할 필요는 없습니다. 왜 갈 때 번역하지 않겠습니까? 당신은 그런 식으로 Haml에 대해 더 많이 배울 것입니다. 충분히 - 희망적으로 - 당신은 전체 들여 쓰기가 본능적이된다는 것을 알게 될 것입니다. 그 후에는 진보가 가속화되기 시작합니다.

Haml은 공백 대신 탭과 같은 문제와 잘못된 압입으로 실제로 잘못 행동합니다.

내 해결 방법 (적어도 TextMate를 사용하여 OSX에서)은 TextMate를 사용하는 것입니다. Haml/Sass 번들이 설치되었습니다. 그런 다음 CMD-를 사용하여 텍스트를 올바르게 다시 표시하기 위해 CMD-를 사용하여 텍스트를 사용하지 않습니다. 그것은 보이지 않는 탭과 잘못된 들여 쓰기를 없애고 구조적 문제를 나타냅니다.

미완료 된 기능 중 하나는 HTML2Haml의 ERB 모드입니다.

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

-e를 사용하면 순수한 html2haml을 사용하여 50%가 아닌 약 95%의 Haml을 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top