web-dev-qa-db-ja.com

改行なしのテキスト内のリンクを使用するHAML

私は現在、小さなSinatra Rubyアプリを開発しています。プレゼンテーション層には、非常にうまく機能するHAMLを使用しています。

しかし、私はFAQページがあり、テキストの段落が長いので問題ありません。しかし、一部の箇所ではリンクを含めたいと思います。純粋なHTMLを使用すると、これは非常に簡単に実現できます。まだ読める。

<p>
I'm talking about <a href="http://Ruby-lang.org">Ruby</a> in this text.
</p>

HAMLでは、この新しい段落で立ち往生しています。次のようになります。

%p
 I'm talking about 
 %a {:href => 'http://Ruby-lang.org'}>Ruby 
 in this text.

これは本当にワークフローを壊すと思います。

HAMLに改行を使用せずにリンクを挿入する方法はありますか?

17
leifg

ソースHamlに改行なしでリンクを追加することについて質問していると思います。ここでやりたいことをするのは本当に不可能です。 haml FAQ から:

ドキュメントの構造を表現することとインラインフォーマットを表現することは、2つの非常に異なる問題です。 Hamlは主に構造用に設計されているため、フォーマットを処理する最善の方法は、Haml用に設計された他の言語に任せることです。

Hamlは空白とインデントを使用して何をするかを決定します。改行がないとインデントがないため、hamlはページに追加する要素を決定できません。

静的テキストのブロックだけが必要な場合は、FAQが次のように提案するように、 マークダウンフィルター を使用できます。

:markdown
  I'm talking about [Ruby](http://Ruby-lang.org) in this text.

他の回答が指摘しているように、生成されたHTMLから改行を削除したい場合は、 空白を使用して調べることができます削除演算子 ですが、all空白を削除することに注意してください。たとえば、

I'm talking about 
%a{:href => 'http://Ruby-lang.org'}>Ruby 
in this text.

>を使用して外側の空白を削除すると次のようになります。

I'm talking about<a href='http://Ruby-lang.org'>Ruby</a>in this text.

これは次のように表示されます

私はこのテキストで Ruby について話している。

つまり、「Ruby」の周りにスペースがないため、おそらく必要なものではありません。

11
matt

思ったより簡単です。このリファレンスを読んでください: http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#whitespace_removal__and_

したがって、使用法は簡単です。%pタグの後にless-sign "<"を追加するだけです。例:

%p<
 I'm talking about 
 %a {:href => 'http://Ruby-lang.org'}>Ruby 
 in this text.

そしてそれはあなたがやりたいことを正確に生成します。

54

シナトラに精通していませんが、Railsでこれを行うことができます:

%p
  I'm talking about #{ link_to 'Ruby', 'http://Ruby-lang.org'} in this text.
16
Thilo

HAMLでインラインHTMLを使用することもできます。

%p I'm talking about <a href="http://Ruby-lang.org">Ruby</a> in this text.
7
postfuturist

完全にそれは:

%p
  I'm talking about 
  = link_to 'Ruby', 'http://Ruby-lang.org'
  in this text.
7
Sadik