Неопределенный метод в разных классах для производного поля базы данных - PullRequest
0 голосов
/ 20 марта 2011

Я знаю, что варианты этого вопроса уже задавались, но я верю, что мой вопрос другой; -)

У меня есть 2 класса Ruby on Rails (с ассоциированными контроллерами, моделями и т. Д.). Это устройства и сообщения.

В представлении Devices index.html мне нужно сделать ссылку на новейшую запись сообщения.

<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, которые относятся к классу Message из устройства index.html.erb?

Заранее спасибо.

1 Ответ

0 голосов
/ 20 марта 2011

Попробуйте newestMessage = Message.last, затем newestMessage.updated_at

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...