5

ビューに 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

および 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
4

4 に答える 4

1

HAML は、空白の代わりにタブが使用されたり、インデントが正しくないなどの問題に対して、非常にうまく動作しません。

私の回避策(少なくともTextMateを使用するOSXでは)は、TextMateを使用し、HAML/SASSバンドルをインストールすることです。次に、CMD-[ を使用してテキストのインデントを解除し、続いて CMD-] を使用してテキストを適切に再インデントします。これにより、目に見えないタブや不適切なインデントが取り除かれ、構造上の問題が明らかになります。

于 2010-09-29T12:01:08.183 に答える
1

示されているように、最初のチャンクは %body が %head よりも 1 レベル多くインデントされており、%head は %html と同じレベルでインデントされていますが、どちらも適切ではありません。それが機能する場合、次のようなものが得られる場合があります

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

ほとんどのブラウザはそれで窒息すると思います!;-)

一般的に、私は html2haml のファンではありません。一生懸命努力していますが、すべてを処理できるわけではないようです。ビューファイルの山が非常に大きい場合を除いて、ファイルを手動で再作成することに時間を費やす傾向があります。すべてを一度に行う必要はありません。必要に応じて翻訳してみませんか? そうすることで、HAML についても多くのことを学ぶことができます。うまくいけば、インデント全体が本能的になり、その後、進行が加速し始めることがわかるでしょう。

于 2009-06-09T19:04:24.383 に答える
0

十分に活用されていない機能の 1 つは、html2haml の ERB モードです。

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

-e を使用するだけで、純粋な html2haml を使用して 50% ではなく、約 95% の方法で HAML を取得できます。

于 2011-12-23T11:08:18.607 に答える