控制器中的私有方法`received_messages'

时间:2013-04-04 15:08:39

标签: ruby-on-rails

我已经从头开始创建了一个消息收件箱。它已经工作了一个多星期了,现在它崩溃了,给了我一个私人方法`received_messages'""错误标题"在MessagesController#index"中的NoMethodError。

出于某种原因,我昨天使用该应用程序向Github推送了一个新的更新(我不推使用终端)我的部分应用程序停止工作,我必须修复。我确定当你推送文件时它并没有改变你的代码,但这不是第一次发生。有谁知道如何解决这个错误?

当我点击提交新邮件时,我只收到错误。

消息控制器:

class MessagesController < ApplicationController

  before_filter :set_user

  def index
    if params[:mailbox] == "sent"
      @messages = @user.sent_messages
    elsif params[:mailbox] == "inbox"
      @messages = @user.received_messages
    #elsif params[:mailbox] == "archieved"
     # @messages = @user.archived_messages
    end
  end

  def new
    @message = Message.new
    if params[:reply_to]
      @reply_to = User.find_by_user_id(params[:reply_to])
      unless @reply_to.nil?
        @message.recepient_id = @reply_to.user_id
      end
    end
  end

  def create
    @message = Message.new(params[:message])
    @message.sender_id = @user_id
    if @message.save
      flash[:notice] = "Message has been sent"
      redirect_to user_messages_path(current_user, :mailbox=>:inbox)
    else
      render :action => :new
    end
  end

  def show
     @message = Message.find(params[:id])
     @message.readingmessage if @message.recepient == current_user
   end

  def delete_multiple
      if params[:delete]
        params[:delete].each { |id|
          @message = Message.find(id)
          @message.mark_message_deleted(@message.id,@user_id) unless @message.nil?
        }
        flash[:notice] = "Messages deleted"
      end
      redirect_to user_messages_path(@user, @messages)
  end

  private
    def set_user
      @user = current_user
    end
end

1 个答案:

答案 0 :(得分:1)

正如apneadiving和Teeg解释的那样,私有方法阻止了收到的消息。我在用户模型中添加了一个新的私有方法,该方法位于文件的顶部。将它移到底部,一切都恢复正常。

确保添加私有方法将其放置在下方,以便它不会阻止其他功能。谢谢!