2011-05-16 54 views
18

我只是想格式化一個haml生成的(文本)郵件程序模板,並且在讀取多行換行符時遇到了一些困難。例如:我還以爲Rails/HAML:文本郵件中的換行符

Dear 
= @user.name, 

Your username is 
= @user.username 




Your status is 
= @user.status 

我曾以爲,多換行符將被讀,但「你的狀態是」行出來就行了直接在用戶名下方。 (是的,許多換行符是多少我想要的誇張,但仍然)

所以,問題是:線條中斷haml文本消息....呃,怎麼樣?

回答

8

嘗試haml的:簡單的幫手。編輯 - 你需要在你的haml文本之後縮進:plain過濾器,就像你通常在haml中一樣。

+0

如何把:平原下兩條線「你的用戶名是」和@ user.username在同一行輸出? – 2011-07-21 19:04:40

+3

好的,我現在明白了。所以':plain'可以被使用(實際上,*必須*被使用 - 否則haml會將你所有的行一起運行並刪除空行)在.text.haml郵件模板中插入**換行符**。 但是爲了解決另一個問題(當你可能不希望它們在''Dear'和'@ user.name'輸出在不同的行上時),這對我很有用:使用'#{value }插值風格,而不是'=值'。因此,對於稱呼行,您可以將它寫爲「親愛的#{@ user.name}」(全部在同一行),以便讓它在同一行顯示。 – 2011-07-21 20:05:06

-5

使用%br標記爲斷線。您也可以使用%p%div並添加一點css :)

+1

我相信原來的問題是關於*純文本*從.text.haml模板生成的電子郵件,因此,使用HTML和CSS就我不認爲是一個適當的解決方案,以解決這個特定的問題 - 雖然它會很好的爲.html.haml模板:) – 2011-07-21 19:58:49

+0

yeap,你是完全正確的:) – 2012-02-07 21:16:07

+0

不相關的原始問題 – 2012-11-08 03:45:09

33

您還可以使用\==

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

這有讓您使用插值的額外的優勢,而使用:plain過濾器不會。

+1

使用':plain'過濾器時,可以使用'#{@ some_ruby}'進行字符串插值。 – Alex 2011-11-19 16:14:08

+0

不錯,不知道,謝謝! – Ivan 2011-11-21 19:40:47

+0

從模板可讀性的角度來看,這是正確的答案。 – superluminary 2012-06-22 15:54:30

14

我建議在純文本模板中使用haml不會添加任何內容,並且在大多數情況下會使它們更復雜,然後使用普通的舊erb模板。畢竟,它的主要目的是簡化標記並省略結束標記的必要 - 這不適用於純文本。

如果你發送的多MIME電子郵件,沒有什麼阻止您使用html.haml的HTML模板和text.erb爲純文本的,這將保護您的多個換行符:

Dear <%= @user.name %>, 

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




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

我認爲這是一個非常好的觀點:HAML的存在是爲了使標記輕量級和優雅。對於不這樣的情況,不需要使用它。 – 2012-11-06 00:26:09

+0

有些人喜歡HAML,它們與html無關,例如,插值佔用的空間較少,而且不必使用''%end'''。 – cesoid 2014-11-14 17:30:09

+1

這個問題不是關於使用HAML的專業版和使用者版。問題是關於如何使用HAML來達到某個結果。這個答案是關閉的話題。 – Volte 2015-09-03 17:44:38

7

考慮另HAML方法更清晰。

Dear #{@user.name}, 

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

的文件名會是這樣的mailer.text.haml

相關問題