2011-04-27 43 views
0

我正在運行Rails 3並喜歡有一個消息系統。下面是它的教程:http://www.novawave.net/public/rails_messaging_tutorial.htmlRails 3:未定義的文件夾方法消息

這是爲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 %> 
+0

發佈完整的錯誤(行號和來自哪裏)以及視圖代碼。 – 2011-04-27 23:56:08

+0

我在第一篇文章中對它進行了編輯。 – Maaaark 2011-04-28 07:03:51

回答

1

你可能有小姐在建立模型中的關係方面邁出了一步。

檢查您的Folder.rb(文件夾模型)與消息建立has_many關係。

class Folder < ActiveRecord::Base 
    has_many :messages, :class_name => "MessageCopy" 

你在控制器中所得到的錯誤是告訴你,這是不是這種情況,該文件夾模型沒有所謂的「消息」的方法,這ActiceRecord(Rails的ORM)會爲您提供的has_many產生碼。

伊恩。

+0

我的文件夾模式: 類文件夾<的ActiveRecord :: Base的 acts_as_tree belongs_to的:用戶 的has_many:消息:CLASS_NAME => 「MessageCopy」 結束 – Maaaark 2011-04-28 06:58:23

+0

你做耙分貝:遷移?文件夾模型的行爲就像沒有定義消息方法一樣。 – ipd 2011-04-28 07:23:10

+0

是的,我做過。沒有任何改變.. – Maaaark 2011-04-28 07:48:57

相關問題