如何处理并非总是传入的邮件部分属性?
How to handle mail partial attribute that isn't always passed in?
我有一个邮件部分支持传入的属性(如果存在),但不需要它。不幸的是,如果我不包含该属性,则会引发异常,因为要调用该属性,我需要调用具有相同名称的方法:
邮件模板:
<%= render partial: 'partials/foobar', first_name: 'John', last_name: 'Smith', phone_number: '555-555-4444' %>
foobar
部分:
<%= first_name %>
<%= last_name %>
<%= phone_number %>
如果我不在部分插入语句中包括 phone_number
:
<%= render partial: 'partials/foobar', first_name: 'John', last_name: 'Smith' %>
然后将引发异常,因为未传入 phone_number
,因此模板将没有名为 phone_number
的方法。
考虑这样 "optional" 部分参数的好方法是什么?
你可以传入可选参数为nil:
<%= render partial: 'partials/foobar', first_name: 'John', last_name: 'Smith', phone_number: nil %>
然后在视图中检查 phone_number 的值,或者打印出 nil 值,这将留下一个空行。
<% if phone_number %>
<%= phone_number %>
<% end %>
另一个选项是检查是否定义了 phone_number。
<% if defined? phone_number %>
<%= phone_number %>
<% end %>
我有一个邮件部分支持传入的属性(如果存在),但不需要它。不幸的是,如果我不包含该属性,则会引发异常,因为要调用该属性,我需要调用具有相同名称的方法:
邮件模板:
<%= render partial: 'partials/foobar', first_name: 'John', last_name: 'Smith', phone_number: '555-555-4444' %>
foobar
部分:
<%= first_name %>
<%= last_name %>
<%= phone_number %>
如果我不在部分插入语句中包括 phone_number
:
<%= render partial: 'partials/foobar', first_name: 'John', last_name: 'Smith' %>
然后将引发异常,因为未传入 phone_number
,因此模板将没有名为 phone_number
的方法。
考虑这样 "optional" 部分参数的好方法是什么?
你可以传入可选参数为nil:
<%= render partial: 'partials/foobar', first_name: 'John', last_name: 'Smith', phone_number: nil %>
然后在视图中检查 phone_number 的值,或者打印出 nil 值,这将留下一个空行。
<% if phone_number %>
<%= phone_number %>
<% end %>
另一个选项是检查是否定义了 phone_number。
<% if defined? phone_number %>
<%= phone_number %>
<% end %>