Я использую Rails 3 и хотел бы иметь систему сообщений.Вот учебник для него: http://www.novawave.net/public/rails_messaging_tutorial.html
Это для Rails 2, поэтому я пытался реализовать его в Rails 3.
Все прошло хорошо, и я могу отправлять сообщения.Но когда я хочу проверить свой почтовый ящик, появляется эта ошибка:
undefined method `messages' for #<Folder:0x0000010419fd48>
Контроллер почтового ящика:
class MailboxController < ApplicationController
def index
redirect_to new_session_path and return unless logged_in?
@folder = current_user.inbox
show
render :action => "show"
end
def show
@folder ||= current_user.folders.find(params[:id])
@messages = @folder.messages.paginate :per_page => 10, :page => params[:page], :include => :message, :order => "messages.created_at DESC"
end
end
Когда я проверяю консоль с помощью:
User.find(9).inbox
все хорошо, и вывод:
ruby-1.9.2-p180 :085 > User.find(9).inbox
=> #<Folder id: 1, user_id: 9, parent_id: nil, name: "Inbox", created_at: "2011-04-27 21:37:00", updated_at: "2011-04-27 21:37:00">
Но когда я добавляю .messages, он возвращает ошибку.
Когда я пытаюсь получить руководство по сообщениям, оно работает:
User.find(9).received_messages
=> [#<MessageCopy id: 7, recipient_id: 9, message_id: 8, folder_id: 1, created_at: nil, updated_at: "2011-04-27 23:15:25">, #<MessageCopy id: 8, recipient_id: 9, message_id: 9, folder_id: 1, created_at: nil, updated_at: "2011-04-27 23:25:06">]
Модели и контроллеры такие же, как в учебнике.
Есть идеи?
Привет
РЕДАКТИРОВАТЬ:
* Добавлена ошибкаи представление
Ошибка:
undefined method `messages' for #<Folder:0x0000010409c900>
app/controllers/mailbox_controller.rb:11:in `show'
app/controllers/mailbox_controller.rb:5:in `index'
Просмотр почтового ящика / шоу:
<h2><%=h @folder.name %></h2>
<table border="1">
<tr>
<th>From</th>
<th>Subject</th>
<th>Received</th>
</tr>
<% @messages.each do |message| %>
<tr>
<td><%=h message.author.login %></td>
<td><%= link_to h(message.subject), message_path(message) %></td>
<td><%= distance_of_time_in_words(message.created_at, Time.now) %> ago</td>
</tr>
<% end %>
</table>
<%= will_paginate @messages %>