【发布时间】:2012-11-15 11:07:08
【问题描述】:
我有一个 Rails 3.2.8 应用程序,其模型名为 Task。在我的任务模型中,我有一个名为“complete_date”的日期时间属性。当我尝试在视图中查看我的 complete_date 时......
<%= @task.complete_date.strftime('%b %e, %Y') %>
我收到一条错误消息,提示“nil:NilClass 的未定义方法 `strftime'”。但是,complete_date 字段不为空。以下查询..
mysql> select count(*) from tasks where complete_date is null;
返回 0 行。我可以使用以下代码在同一视图中检索完整日期...
<% @task.attributes.each_pair do |name, value| %>
<% if name == "complete_date" %>
<%= value.strftime('%b %e, %Y') %>
<% end %>
<% end %>
这工作得很好,所以问题似乎只在于使用点符号 (@task.complete_date) 访问属性。我已在我的任务模型中将“完成日期”列为 attr_accessible 和 attr_accessor。知道为什么在使用 @task.complete_date 引用 complete_date 字段时我总是得到 nil 吗?谢谢。
【问题讨论】:
-
你能打开rails控制台,加载一个Task对象并检查它是什么类吗?类似
t = Task.first和t.class -
去掉
attr_accessor :complete_date还能用吗?你不应该写它,因为 AR 使用缺少的方法从数据库中检索属性。
标签: ruby-on-rails ruby activerecord