好的,这个伤害了我的大脑:
我在send_invoice_html.erb中有这样的东西,这是我的user_mailer视图之一:
<% if @cust_inv_template %>
<%=raw @cust_inv_template.cust_mail_invoice_template%>
<%else%>
所以我让用户在另一个视图中设置他们的电子邮件模板,将其保存到数据库,然后我想说“如果有模板,请使用它,否则,使用我的默认”。
在我的模板中是一些HTML和一些Rails代码:
<html>
Aloha <%= @user.first_name %>,<br />
<p>Please find attached your invoice for Job #<%= @job.job_number %> which we completed on <% ed = Date.parse(@job.end_date.to_s);
endDate = Date.strptime(ed.to_s, "%m-%d-%Y") %><%= endDate.to_s %>.</p>
<p>If you have any questions, please call us at <%= number_to_phone(@admin.phone_number) %> or email us at <%= @admin.email %></p>
<br />Thanks,
<br/><%= @admin.name %>
</html>
因此,当邮件发送到我的邮箱(Gmail)时,我看到:
Aloha <%= @user.first_name %>,
Please find attached your invoice for Job #<%= @job.job_number %> which we completed on <% ed = Date.parse(@job.end_date.to_s); endDate = Date.strptime(ed.to_s, "%m-%d-%Y") %><%= endDate.to_s %>.
If you have any questions, please call us at <%= number_to_phone(@admin.phone_number) %> or email us at <%= @admin.email %>
TEST TEST TEST TEST TEST
Thanks,
<%= @admin.name %>
Ergo - 使用&lt;%=原始部分(之前我尝试过html_safe),我的HTML得到了很好的尊重 - 但Rails代码正在按原样吐出。我希望在发送消息之前解释Rails-y的好处。
当我拿出if else的东西并且只使用完全相同的模板时,Rails代码被尊重。
这意味着必须有某种“吐出这个字符串中的内容var并且如果有任何酷酷的东西在那里继续并在某些类中解释”方法:)
任何人都知道那是什么?
答案 0 :(得分:1)
raw
是关于不转义HTML,但它不会解释您的ruby代码。要解释您的ruby代码,您需要使用评估erb模板。
<%=raw Erb.new(@cust_inv_template.cust_mail_invoice_template).result %>
Check the docs了解更多信息。