用于ActiveModel :: Errors的未定义方法`model_name':Class

时间:2012-07-21 12:28:52

标签: ruby-on-rails mongoid activemodel

我有以下mongoid模型类:

class Exercise
  include Mongoid::Document
  field :name, :type => String
  field :description, :type => String

  belongs_to :group

  validates_presence_of :name, :description, :group
end

我有以下控制器:

class ExercisesController < ApplicationController
  respond_to :json

  def create
    @exercise = Exercise.create(params[:exercise])
    if @exercise.save
      respond_with @exercise
    else
      respond_with(@exercise.errors, :status => :unprocessable_entity)
    end
  end
end

模型在有效时保存正常但在运行以下行时保存:

respond_with(@exercise.errors, :status => :unprocessable_entity)

我收到以下错误

  

未定义的方法`model_name'用于ActiveModel :: Errors:Class

填充了错误集合,因此我认为我的respond_with语法错误。

1 个答案:

答案 0 :(得分:2)

rails respond_with helper期望接收rails模型对象作为第一个参数。所以在这种情况下你只需要response_with @exercise,status :: unprocessable_entity然后在你的响应视图中你需要正确格式化错误数据,我假设你是通过ajax做这个并用json响应等。希望有所帮助。