В моем шаблоне Rails я хотел бы закончить HTML для этого эффекта с помощью HAML:
I will first <a href="http://example.com">link somewhere</a>, then render this half of the sentence if a condition is met
Шаблон, который приближается:
I will first
= link_to 'link somewhere', 'http://example.com'
- if @condition
, then render this half of the sentence if a condition is met
Однако вы можете заметить, что это создает пробел между ссылкой и запятой. Есть ли какой-нибудь практический способ избежать этого пробела? Я знаю, что существует синтаксис для удаления пробелов вокруг тегов, но можно ли применить тот же синтаксис только к тексту? Мне действительно не нравится решение дополнительной разметки для этого.
ruby-on-rails
haml
Matchu
источник
источник
succeed
специально)? Мне это все еще кажется неочевидным и немного некрасивым: gist.github.com/1665374@condition == false
, что более уродливое , чем пространство перед этой запятой.Вы также можете сделать это с помощью модификатора Haml "trim whitespace". Вставка
>
после объявления Haml предотвратит добавление пробелов вокруг него:производит:
Однако, как вы можете видеть,
>
модификатор также удаляет пробелы перед ссылкой, удаляя желаемое пространство между словами и ссылкой. Я еще не придумал, как это обойтись, кроме как добавить
в конец «Я сделаю первым», например:Что, наконец, дает желаемый результат без большого количества трудночитаемой интерполяции:
источник
имеет особое значение, это не обычные пробелы - это неразрывные пробелы, что означает, что во время переноса слов браузер будет делать все, чтобы слова были связаны
вместе, а это не всегда то, что вы хотите. 
вместо
простого пробела.Хорошо, вот решение, на котором я остановился:
Помощник
Посмотреть
Таким образом, пробелы исключаются по умолчанию, но я все равно могу явно включить их в строку «\ n». (Ему нужна двойная обратная косая черта, потому что в противном случае HAML интерпретирует его как фактический перевод строки.) Сообщите мне, есть ли лучший вариант!
источник
Вы можете использовать «синтаксис алигатора» HAML
http://haml.info/docs/yardoc/file.REFERENCE.html#whitespace_removal__and_
источник
Когда-то подход, который я выбрал для такого рода вещей, заключается в использовании интерполяции строк:
Мне не нравится внешний вид буквальной строки в интерполяции, но я использовал ее раньше с ранее объявленными строками или динамически сгенерированными строками.
источник
Вы можете сделать это, чтобы сохранить ведущее пространство:
Пробел в кавычках.
источник
Хотя это плохо документировано, это достигается с помощью сохранения пробелов HAML (>) в сочетании с пробелом ASCII (& # 32;), а не с помощью помощников:
Это даст то, что вы хотите:
Но я согласен, HAML нужно придумать лучший способ сделать это, поскольку он добавляет на страницу ненужные символы ASCII (но все же это более эффективно, чем использование помощников).
источник
Есть синтаксис угловой скобки «пережевывание пробелов», иначе напишите для него вспомогательный метод.
источник
Я столкнулся с аналогичной проблемой и нашел ее, поэтому решил опубликовать другое решение, для которого не требуется вспомогательный метод. Используйте интерполяцию Ruby # {}, чтобы обернуть ссылку и операторы if:
Это работает в 3.0.18, может также работать в более ранних версиях.
источник
.haml
файл - тот факт, что он включает ссылку и запятую, в любом случае ничего не означает.Еще один вариант, который я использовал раньше:
источник
Вы также всегда можете сделать:
источник
Решение, которое у меня получилось:
Вы можете использовать
=
, хотя=
используется для вывода результата кода Rails, но здесь он будет обслуживать цель.источник
Функция сохранения сработала для меня
.white-space-pre= preserve "TEXT"
источник