我没有调用方法的Rails NoMethodError

时间:2016-07-08 05:40:11

标签: ruby-on-rails

我收到以下错误

Error Message Image

尝试在MessageController中保存消息对象时。这是我的控制器。

class MessagesController < ApplicationController

  def new
    @message = Message.new
    @user = current_user
  end

  def create
    @message = Message.new(message_params)
    @message.user = current_user
    @message.user_id = current_user.id

    if @message.user_email.nil?
        @message.user_email = current_user.email
    end

    if @message.save
        # UserMailer.send_email_to_admin(current_user.email).deliver
    else
        # redirect_to new_message_path(@message)
    end
  end

  private

  def message_params
    params.require(:message).permit(:subject, :body, :user_email)
  end

end

这是我的模特。

class Message < ActiveRecord::Base
  belongs_to :user
  validates :user_email, presence: true
  validates :subject, presence: true, length: { minimum: 5 }
  validates :message, presence: true, length: { minimum: 10 }
end

我不知道为什么会出现此错误,因为我的应用中没有名为“message”的方法。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

在您的模型中,您对message字段进行了验证:

validates :message, presence: true, length: {minimum: 10}

这应该是您body字段的验证吗?:

validates :body, presence: true, length: {minimum: 10}

在保存记录之前,验证程序正在调用message实例(Message)上的@message方法来检查其存在并对其进行验证。由于您没有名为message的列但已对其进行验证,因此您将获得NoMethodError