我有一个名为Task的模型的Rails 3.2.8应用程序。在我的Task模型中,我有一个名为'complete_date'的日期时间属性。当我尝试使用..
在视图中查看我的complete_date时<%= @task.complete_date.strftime('%b %e, %Y') %>
我收到一条错误,说“未定义的方法`strftime'代表nil:NilClass”。但是,complete_date字段不为null。以下查询..
mysql> select count(*) from tasks where complete_date is null;
返回0行。我可以使用以下代码在同一视图中检索complete_date ...
<% @task.attributes.each_pair do |name, value| %>
<% if name == "complete_date" %>
<%= value.strftime('%b %e, %Y') %>
<% end %>
<% end %>
这很有效,所以看起来问题只在于使用点表示法访问属性(@ task.complete_date)。我在我的Task模型中列出了'complete_date'作为attr_accessible和attr_accessor。知道为什么我在使用@ task.complete_date引用complete_date字段时总是变为nil?感谢。
答案 0 :(得分:1)
您应该删除attr_accessor :complete_date
。由于attr_accessor
创建了两种方法(#complete_date
&amp; #complete_date=
)并使用了实例变量@complete_date
,因此它没有填充记录属性的值。这两种方法重写了ActiveRecord属性访问器方法。