Подтвердить что ты не робот

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

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

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

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

С HAML я застрял с этими новыми параграфами, которые потом выглядят так:

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

Я думаю, что это действительно нарушает рабочий процесс.

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

4b9b3361

Ответ 1

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

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

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

Если вы просто хотите блоки статического текста, вы можете использовать markdown filter, как часто задаваемые вопросы:

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

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

Ответ 2

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

Таким образом, использование простое, просто добавьте less-sign "<" после тэга% p, например:

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

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

Ответ 3

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

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

Ответ 4

отлично:

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

Ответ 5

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

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