kENDを期待して、予期せぬkENSURE - HAMLの変換の問題をレール

StackOverflow https://stackoverflow.com/questions/971367

  •  13-09-2019
  •  | 
  •  

質問

私は私の意見のために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での問題は、コンテンツのないDOブロックを始めているということです。

- form_tag session_path do
%fieldset

全体のフィールドセットは、doブロック内(インデント)ネストされなければなりません。何のコンテンツが全くありませんので、HAMLはend宣言に入れることができないので、ファイルが解釈取得すると、あなたが得る:

unexpected $end, expecting kEND

"私はファイル($端)の終わりを打つ、私は(kEND)endキーワードを期待していた" の意味

他のヒント

示されるように、

、最初のチャンクは%本体インデント一の段階%のヘッドよりも、良好でどちらも%のHTML、同じレベルで%のヘッドを有しています。それが動作する場合は、

のようなものを得ることができます
<html>
</html>
<head>
  ...
  <body>
  ...
  </body>
</head>

私は、ほとんどのブラウザがその上でチョークうと思います! ; - )

一般的に、私はそれがすべてを処理することができるようには見えないハードしようとしますが、html2hamlのファン、いませんよ。ビューファイルの深刻な大規模な山を持っていない限り、私は手でファイルを再加工の時間を過ごすために傾いているはずです。あなたが行くように、なぜちょうどそれらを翻訳していない、一度にすべてを行う必要はありませんか?あなたも、そのようにHAMLについて多くの詳細を学びます。うまくいけば - - ということは十分。あなたは進歩が加速し始める後の事は本能的になり、全体のインデントを、見つけることができます。

HAMLではなく、空白のタブ、および不正確なインデントなどの問題で、本当に悪い振る舞い。

(少なくともTextMateのを使用してOSX上)私の問題を回避するには、<のhref = "http://bjhess.com/blog/2007/05/31/installing-haml-bundle-for-textmateは、TextMateのを使用する必要があります/」のrel = "nofollowを"> HAML / SASSバンドルインストールする。それから私は、テキストを適切に再インデントに[CMD-により、以下の、非インデントにテキストを] CMD-を使用しています。それがどんな目に見えないタブや不正確なインデントを取り除く、加えて任意の構造的な問題を明らかにします。

一つの十分に利用されていない機能がhtml2hamlのERBモードです。

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

ただ、-eは純粋html2hamlを使用して、あなたのHAMLそこに道の約95%ではなく50%を取得します使用して

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top