1

好的,所以这个伤害了我的大脑:

我在 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 - 我的 HTML 在 <%=raw 部分得到了很好的尊重(我之前尝试过 html_safe ) - 但是 Rails 代码按原样吐出。我希望在发送消息之前解释 Rails-y 的优点。

当我取出 if else 的东西并使用完全相同的模板时,Rails 代码受到尊重。

这意味着在某个类中必须有某种“吐出这个字符串 var 里面的东西,如果里面有任何很酷的 rails 东西,请继续解释那个”方法:)

有谁知道那是什么?

4

1 回答 1

1

raw是关于不转义 HTML,但它不会解释您的 ruby​​ 代码。要解释您的 ruby​​ 代码,您需要使用评估 erb 模板。

<%=raw Erb.new(@cust_inv_template.cust_mail_invoice_template).result %>

检查文档以获取更多信息。

于 2013-09-08T04:32:03.313 回答