Rails/HAML:文本邮件中的换行符

Pla*_*Ton 19 haml ruby-on-rails actionmailer

我只是想尝试格式化一个haml生成的(文本)邮件程序模板,而我在阅读多个换行符时遇到了一些困难.例如:我想过

Dear
= @user.name,

Your username is
= @user.username




Your status is
= @user.status
Run Code Online (Sandbox Code Playgroud)

我曾假设会读取多个换行符,但"您的状态为"行会在用户名正下方的行上显示.(是的,那么多次换行是夸大了我想要多少,但仍然)

所以,问题是:haml短信中的换行符......呃,怎么样?

Iva*_*van 35

您还可以使用\==:

Dear
= @user.name,
\
Your username is
= @user.username
\
\
\
\
Your status is
= @user.status
Run Code Online (Sandbox Code Playgroud)

这具有允许您使用插值的附加优点,而使用:plain滤波器则不会.

  • 使用 `:plain` 过滤器时,您可以使用 `#{@some_ruby}` 进行字符串插值。 (2认同)

Thi*_*ilo 14

我建议使用haml作为纯文本模板不会添加任何东西,并且在大多数情况下使它们比普通的旧erb模板更复杂.毕竟,它的主要目的是简化标记并省略关闭标记的需要 - 这不适用于纯文本.

如果您要发送多个mime的电子邮件,那么没有什么可以阻止您使用html.hamlHTML模板和text.erb纯文本模板,这将保留您的多个换行符:

Dear <%= @user.name %>,

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




Your status is <%= @user.status %>
Run Code Online (Sandbox Code Playgroud)

  • 问题不在于使用HAML的专业人士和骗局.问题是如何使用HAML来达到某个结果.这个答案是主题. (2认同)

Max*_*ams 9

试试haml的:普通助手.

Dear
= @user.name,

Your username is
= @user.username
:plain



  Your status is
  = @user.status
Run Code Online (Sandbox Code Playgroud)

*编辑 - 您需要在正常过滤器之后缩进您的haml文本,就像通常在haml中一样.

  • 好的,我现在明白了.所以``plain`可以使用(实际上,*必须*使用 - 否则haml会将所有行一起运行并删除空行)以在.text.haml邮件程序模板中插入**换行符**.但是为了解决另一个问题(当你可能不想要它们时,`Dear`和`@ user.name`在不同的行上输出),这对我有用:使用`#{value}`插值的样式而不是`= value`.因此,对于称呼线,您可以将其写为"亲爱的#{@ user.name}"(全部在同一行),以使其显示在同一行上. (3认同)

sca*_*er2 7

考虑另一种更清晰的HAML方法.

Dear #{@user.name},

Your username is #{@user.username}
\
\
\
Your status is #{@user.status}
Run Code Online (Sandbox Code Playgroud)

文件名就像是 mailer.text.haml