HAML используя ссылки в тексте без перевода строки - PullRequest
17 голосов
/ 01 мая 2011

В настоящее время я разрабатываю небольшое приложение Sinatra Ruby.Для слоя презентации я использую HAML, который работает довольно хорошо.

Однако у меня есть страница часто задаваемых вопросов, которая содержит более длинные текстовые абзацы, что не является проблемой.Но в некоторых местах я бы хотел включить ссылки.С чистым HTML этого очень легко достичь и все еще можно прочитать.

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

С HAML я застрял с этим новым параграфом, который затем выглядит так:думаю, это действительно нарушает рабочий процесс.

Есть ли способ в HAML просто вставить ссылку без использования новой строки?

Ответы [ 5 ]

54 голосов
/ 12 мая 2011

Это проще, чем вы думаете. Просто прочитайте эту ссылку: http://haml -lang.com / docs / yardoc / file.HAML_REFERENCE.html # whitespace_removal__and_

Чтобы использовать это просто, просто добавьте знак «

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

И он сгенерирует именно то, что вы хотите сделать.

16 голосов
/ 02 мая 2011

Не знаком с Синатрой, но в Rails вы можете просто сделать это:

%p
  I'm talking about #{ link_to 'Ruby', 'http://ruby-lang.org'} in this text.
11 голосов
/ 02 мая 2011

Я предполагаю, что вы спрашиваете о добавлении ссылок без перевода строки в источнике Haml .Здесь не возможно делать то, что вы хотите.Из haml FAQ :

Выражение структуры документа и выражение встроенного форматирования - это две очень разные проблемы.Haml в основном предназначен для структуры, поэтому лучший способ справиться с форматированием - оставить его для других языков, предназначенных для него.

Haml использует пробелы и отступы, чтобы определить, что делать, и безлюбые новые строки не имеют отступов, и поэтому haml не может определить, какие элементы добавить на страницу.

Если вам нужны блоки статического текста, вы можете использовать фильтр уценки как часто задаваемые вопросы предлагают, например, так:

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

Как уже указывалось в других ответах, если вы хотите удалить новые строки из сгенерированного HTML , вы можете использовать операторы удаления пробелов , но обратите внимание, что они удаляют все пробелов, так что, например,

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 в этом тексте.

то есть безпробелы вокруг "Рубина", которыйвероятно, не то, что вы хотите.

7 голосов
/ 20 февраля 2013

отлично это:

%p
  I'm talking about 
  = link_to 'Ruby', 'http://ruby-lang.org'
  in this text.
7 голосов
/ 03 мая 2011

Вы также можете использовать встроенный HTML в HAML.

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