跨类的未定义方法,用于数据库派生字段

时间:2011-03-20 17:07:46

标签: ruby-on-rails

我知道之前曾问过这个问题的变体,但我确实相信我的问题不同; - )

我有2个Ruby on Rails类(使用assoc。控制器,模型等)。这些是设备和消息。

在Devices index.html视图中,我需要引用最新的Message记录。

<table>
  <tr>
    <th>Device Name</th>
<th>Checked</th>
  </tr>

 <% newestMessage = Message.find(:all, :order => "updated_at DESC", :limit => 1) %>

 <% @devices.each do |device| %>
    <tr>
      <td><%= device.name %></td>
  <td><%= newestMessage.updated_at %></td>
    </tr>
  <% end %>
</table>

(我相信我应该将逻辑转移到帮助者,但暂时我会让它保持尽可能简单,当我开始工作时)

当我访问这个blahblah.com/devices时,我得到......

undefined method `updated_at' for #<Array:0x103f36c00>

由于这条线,

<td><%= newestMessage.updated_at %></td>

现在,我已经看到这样的问题建议将以下内容添加到messages_controller.rb,

  attr_accessor :updated_at

但是,我试过这个并没有用。另外,我认为这不应该是必要的,因为'updated_at'是从数据库派生的,用脚手架等构建的。

如果我只打印'newestMessage',它似乎有一个明智的价值。

我的问题是,我应该如何访问newestMessage中的字段,这些字段来自Device index.html.erb的类消息?

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试newestMessage = Message.last然后newestMessage.updated_at