【问题标题】:private method `received_messages' in controller控制器中的私有方法“received_messages”
【发布时间】:2013-03-26 18:04:11
【问题描述】:

我从头开始创建了一个消息收件箱。它已经工作了一个多星期,现在它崩溃了,给了我一个“私有方法`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

【问题讨论】:

  • received_messages 现在在 User 中是私有的
  • 那么删除私有方法?上周就在那里,并且工作正常(在昨天的最后一次提交之前)
  • 无法在您提交之前和之后检查代码很难诊断,但正如 apneadiving 所说,该方法似乎是用户类的私有方法。我假设在你的代码中有一行写着private,之后你的received_messages 方法就会出现。要么将方法移到private 行上方,要么完全删除private 行。
  • 请显示您的用户类别
  • 谢谢。愚蠢的我,我确实向另一个文件添加了一个新的私人文件。问题已解决!事情总是那么简单。再次感谢大家!

标签: ruby-on-rails


【解决方案1】:

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

确保是否添加私有方法将其放置在下方,以免阻塞其他功能。谢谢!

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多