同じ行にある複数のHaml要素

haml
同じ行にある複数のHaml要素

同じ行に2つのHaml要素を含めることができます。 例えば:

%h1%a {:href ⇒ '/'}Professio。

それはうまくいきません。 どうすればこのようなものを動かさずに機能させることができますか?

  11  3


ベストアンサー

遅い答えですが、私は同じ問題に自分自身で取り組んでおり、HAMLが言語の一部としてこれを行う方法があることを知っていました。 HAMLリファレンスの空白の削除セクションを参照してください。

あなたはこのようにすることができます:

%h1<
  %a{ :href => '/' } Professio.

またはこのように:

%h1
  %a{ :href => '/' }> Professio.

17


残念ながら、2つのhaml要素を同じ行に置くことはできません。

インラインhtml要素を使用して同様のことを実現できます。

%h1 Lorem ipsum

この形式が気に入らないのはなぜですか?

%h1
  %a{:href => '/'} Professio.

別のオプションは、特別な「ヘルパー」メソッドを作成することです(HTMLリンクを生成します)。 たとえば、Railsのlink_toは次のとおりです。

%h1= link_to 'Professio', root_url

5


Hamlはこれを行うことができません。 Slimでできること:

h1: a( href='/' ) Professio.

と同じです。

h1
  a( href="/ ) Professio

必要に応じて、より深いツリーを記述できます。

ul.nav
  li.active: a( href="/home" ):    strong Home
  li:        a( href="/contact" ): span   Contact

Jadeも同様の構文を持ち、この機能をサポートしていますが、Node.js環境向けに設計されています。

5


同じ行にHTMLを保存する場合は、次のようなものを試すことができます。

irb> print Haml::Engine.new("%h1<\n  %a{:href => '/'} Profession.").render()
Profession.

ここにあります:http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#whitespace_removal__and_[HAMLホワイトスペースの削除]

[編集:上記のb hrefのことを知っています…​]

2


タイトルとURLをコピーしました