2014-07-10 60 views
2

我正在使用動作梅勒,並試圖包括一個鏈接。出於某種原因,HTML正在被轉義,而不是顯示鏈接,它顯示:Rails的actionmailer轉義HTML與link_to

<a href="http://localhost:3000/employer?task_review=true">here</a> 

相反,它應該只顯示鏈接。這裏是Ruby:

<%= raw(link_to("here", employer_url(:task_review => 'true'))) %> 

我也曾嘗試:

<%= link_to("here", employer_url(:task_review => 'true')).html_safe %> 

<%= link_to("here", employer_url(:task_review => 'true')) %> 

他們都不似乎工作。我已經看過其他類似問題的答案,他們都說要使用rawhtml_safe,但都不起作用。有沒有人有任何想法?

+5

確定電子郵件是以HTML格式發送的嗎?它可能是它以TEXT格式發送的嗎? –

+0

我認爲它是以html格式。我如何檢查/更改它? – Philip7899

+0

查看原始郵件(在Gmail中更多 - >顯示原始郵件)並查找「Content-Type:text/html; charset =「UTF-8」' –

回答

1

從你的問題的描述,看起來問題不在模板渲染中,而是在內容類型中。

電子郵件客戶端接受不同的內容類型並相應地進行渲染 - 如果內容類型爲text/html,則解析並呈現HTML,或者如果內容類型爲text/plain,則顯示文本爲原樣。

許多郵寄者發送包含多個郵件版本(一個HTML和一個TEXT)的郵件,以支持沒有HTML功能的舊郵件客戶端。

檢查發出的郵件程序是否有一個HTML版本,打開它的原始信息(在Gmail中,這將是More -> show original下),查找文本看起來像這樣:

------=_NextPart_001_0048_01CE7CA4.8389CCD0 
Content-Type: text/html; 
    charset="windows-1255" 

這意味着有您發送的郵件的HTML版本。

但是,如果你看到的是這樣的:

------=_NextPart_001_0048_01CE7CA4.8389CCD0 
Content-Type: text/plain; 
    charset="windows-1255" 

你的問題是存在的。 (如果兩個選項都出現 - 您的郵件客戶端可能不支持HTML)

如果您發現不發送HTML版本,請確保您的模板文件的擴展名爲.html.erb而不是.text.erb(後者向郵件程序指出您想要一個純文本的郵件格式)。

0
在配置/環境/ development.rb

config.action_mailer.default_url_options = { :host => 'localhost:3000' } 

這可以解決這個問題。

+0

謝謝,但這已經在那裏。 – Philip7899

0

有關的ActionMailer你應該用url_for助手建立的網址,因爲其他傭工喜歡link_to不可在ActionMailer,或在您的ActionMailer類的輔助方法:

<%= url_for controller: 'login', 
       action: 'verify', 
       only_path: false, 
       host: 'http://myawesomesite.com', 
       params: { token: '12hew' } %> 
+0

如果我這樣做,我該如何控制鏈接文本所說的內容? – Philip7899