我有一个看起来像这样的观点:
<p><%= stage.end_date.strftime("%A, %d %B %Y")%></p>
有时stage.end_date返回null,没关系,但是Ruby会抛出NoMethodError。
我对Ruby很陌生,所以我想知道如何处理视图中缺少/ null的varibles
欢迎提供建议
答案 0 :(得分:7)
只需使用Rails方法试试。基本上这样做:
stage.end_date.try(:strftime,"%A, %d %B %Y")
当end_date为nil时,尝试不会调用该方法,只返回nil。
答案 1 :(得分:5)
你可以这么做,但这里有两个:
<p><%= stage.end_date.strftime("%A, %d %B %Y") unless stage.end_date.nil? %></p>
或在您的舞台模型中,创建:
def end_date_formatted
return "" if end_date.nil?
end_date.strftime("%A, %d %B %Y")
end
答案 2 :(得分:1)
问题是在nil对象上调用strftime。这是一个例子:
>> t = Time.now
=> Thu Jul 22 16:52:10 -0400 2010
>> x = nil
=> nil
>> puts t.strftime("%A, %d %B %Y")
Thursday, 22 July 2010
=> nil
>> puts x.strftime("%A, %d %B %Y")
NoMethodError: undefined method `strftime' for nil:NilClass
from (irb):4
当您对可能为nil的对象调用方法(如strftime)时,您将收到此错误。您可以针对这些情况尝试以下操作:
<p><%= stage.end_date.strftime("%A, %d %B %Y") unless stage.end_date.nil? %></p>
如果不起作用,请将.nil?
替换为.blank?
希望有所帮助。