2011-05-16 2 views
18

Я просто пытаюсь отформатировать шаблон почтовой рассылки, созданный haml (text), и у меня возникли трудности с чтением нескольких разрывов строк. Например: Я бы подумалRails/HAML: Разрывы строк в текстовой почте

Dear 
= @user.name, 

Your username is 
= @user.username 




Your status is 
= @user.status 

Я предположил, что множественные разрывы строк будут читать, но «Ваш статус» линия выходит на линии непосредственно под именем пользователя. (Да, много разрывов строк - это преувеличение того, сколько я хочу, но все же)

Итак, вопрос: Разрывы строк в текстовых сообщениях haml .... erm, how?

ответ

8

Попробуйте haml's: простой помощник.

Dear 
= @user.name, 

Your username is 
= @user.username 
:plain 



    Your status is 
    = @user.status 

* редактировать - вам нужно сделать отступ Haml текст следующего за: простой фильтр, как обычно в Haml.

+0

. Как делает: простой ниже двух строк «Ваше имя пользователя» и @ user.username будут выводиться в одной строке? –

+3

Хорошо, я понял. Таким образом, можно использовать ': plain' (на самом деле, * must * использовать, иначе haml будет запускать все ваши строки вместе и удалять пустые строки), чтобы вставить ** разрывы строк ** в шаблонах почтовой программы .text.haml. Но для решения другой проблемы (где 'Dear' и' @ user.name' выводятся по отдельным строкам, когда вы, вероятно, не хотите их), это то, что работает для меня: используйте значение '# { } 'стиль интерполяции вместо' = value'. Поэтому для линии приветствия вы можете написать ее как «Дорогой # {@ user.name}' (все в одной строке), чтобы она отображалась в одной строке. –

-5

Использовать %br тег для линии разлома. Также вы можете использовать и %div и добавить немного css :)

+1

Я считаю, что первоначальный вопрос был относительно * обычный текст * электронные письма, полученные от .text.haml шаблона, так что я не думаю, что с помощью HTML и CSS будет быть подходящим решением для этой конкретной проблемы - хотя это отлично подойдет для .html.haml templates :) –

+0

yeap, вы совершенно правы :) –

+0

Не имеет отношения к исходному вопросу –

33

Вы также можете использовать \ или ==:

Dear 
= @user.name, 
\ 
Your username is 
= @user.username 
\ 
\ 
\ 
\ 
Your status is 
= @user.status 

Это имеет дополнительное преимущество, что позволяет использовать интерполяцию, в то время как с помощью :plain фильтра не будет.

+1

Вы можете использовать '# {@ some_ruby}' для интерполяции строк при использовании фильтра ': plain'. – Alex

+0

Ницца, не знал об этом, спасибо! – Ivan

+0

С точки зрения читаемости шаблона, это правильный ответ. – superluminary

14

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

Если вы отправляете несколько пантомимы писем, ничего не мешает вам использовать html.haml для HTML шаблонов и text.erb для простых текстовых единиц, что позволит сохранить ваши многочисленные разрывы строк:

Dear <%= @user.name %>, 

Your username is <%= @user.username %> 




Your status is <%= @user.status %> 
+0

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

+0

Есть некоторые вещи, которые некоторые люди предпочитают HAML, которые не связаны с html, например, интерполяция занимает меньше места, и вам не нужно использовать '' '% end'''. – cesoid

+1

Вопрос не в том, что про и против использования HAML. Вопрос состоял в том, как использовать HAML для достижения определенного результата. Этот ответ не соответствует теме. – Volte

7

Рассмотрим другой Подход HAML, который является более разборчивым.

Dear #{@user.name}, 

Your username is #{@user.username} 
\ 
\ 
\ 
Your status is #{@user.status} 

Имя файла будет что-то вроде mailer.text.haml

Смежные вопросы