Запятая разделена на одной строке в HAML - PullRequest
5 голосов
/ 04 ноября 2011

Используя HAML, я хотел бы иметь ссылки в одну строку с запятыми между ними.Вот так:

Check me out on GitHub, Twitter, Coderwall and LinkedIn.

Вот что у меня есть:

%footer
  Check me out on
  %a{:href => url('http://github.com/bostonaholic')} Github
  ,
  %a{:href => url('http://www.twitter.com/bostonaholic')} Twitter
  ,
  %a{:href => url('http://coderwall.com/bostonaholic')} Coderwall
  and
  %a{:href => url('http://www.linkedin.com/in/mboston')} LinkedIn
  \.

Но это получается так:

Check me out on GitHub , Twitter , Coderwall and LinkedIn .

Как это исправить, чтобы запятые и точка были в правильных местах?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 12 марта 2015

HAML рассмотрел этот случай с помощником succeed. Документы здесь: http://haml.info/docs/yardoc/Haml/Helpers.html#succeed-instance_method

Это ХАМЛ

click
= succeed '.' do
  %a{:href=>"thing"} here

производит

click
<a href='thing'>here</a>.
5 голосов
/ 01 августа 2014

Это огромная и давняя проблема в HAML.Я решил это лично двумя разными способами.

1) Я помещаю нужный текст в элементы массива и использую

join(', ')

Но этодовольно деликатный способ делать вещи.

2) Единственное «решение» HAML заключается в специальном> символе.Символ> удаляет пробелы в выходном html, чтобы не было пробелов ДО или ПОСЛЕ того, как выводится этот тег.

Это лучшее, что я смог придумать, и я теряю сонночью это страшное безобразие.

  %a{:href => 'here'} Github
  %span> ,&nbsp;
  %a{:href => 'there'} Twitter

Заметки об этой последней технике.

а.Если вы не используете;вы не получите пробел, даже если он включен в исходном коде.Использование кавычек (% span> # {","}) и пробел не работают, так как очевидно, что HAML обрезает вывод.

б.Вы должны использовать тег, потому что использование> работает только после тега, насколько я могу судить.Использование =>, к сожалению, не будет работать.Это был бы мой рекомендуемый способ сделать это, но это не решило бы последнюю потерянную область в любом случае.

3) В моих проектах rails я использую следующую комбинацию партиалов и помощников:

partical: _haml_comma.html.haml

%span> ,&nbsp;

helper.rb

  def comma
    render :partial => "shared/haml_comma"
  end

.haml file:

  %a{:href => 'here'} Github
  = comma
  %a{:href => 'there'} Twitter
1 голос
/ 12 января 2017

Используя хелпер 'успешно' (спасибо @josal), вот простой и понятный способ сделать это:

%footer
  Check me out on
  = succeed ',' do
    %a{:href => url('http://github.com/bostonaholic')} Github
  = succeed ',' do
    %a{:href => url('http://www.twitter.com/bostonaholic')} Twitter
  = succeed 'and' do
    %a{:href => url('http://coderwall.com/bostonaholic')} Coderwall
  = succeed '.' do
    %a{:href => url('http://www.linkedin.com/in/mboston')} LinkedIn

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

...