Ruby on rails Rails 3 ActiveModel::序列化程序似乎需要很多支持方法

Ruby on rails Rails 3 ActiveModel::序列化程序似乎需要很多支持方法,ruby-on-rails,ruby,activemodel,Ruby On Rails,Ruby,Activemodel,在几年没有使用RoR之后,我又回到了RoR,我尝试使用ActiveModel将一个普通对象序列化为XML 根据activemodel/lib/activemodel/serialization.rb中的注释,我正在执行以下操作: class XmlError include ActiveModel::Serializers::Xml attr_accessor :code attr_accessor :description def attributes @attr

在几年没有使用RoR之后,我又回到了RoR,我尝试使用ActiveModel将一个普通对象序列化为XML

根据activemodel/lib/activemodel/serialization.rb中的注释,我正在执行以下操作:

class XmlError

  include ActiveModel::Serializers::Xml

  attr_accessor :code
  attr_accessor :description

  def attributes
    @attributes ||= {'code' => 'nil', 'description' => 'nil'}
  end

  def initialize(error_code)
    @code = error_code
    @description = "blah"
   self
  end
end
我在控制器中使用它作为:

render :xml => XmlError.new("invalid_login")
我得到了以下跟踪:

NoMethodError(XmlError:Class的未定义方法“model_name”):

app/controllers/users\u controller.rb:19:in'login'

app/controllers/users\u controller.rb:5:在“登录”中

如果创建一个
model\u name
class方法,我将获得以下堆栈跟踪:

NoMethodError(未定义的“XmlError”的“element”方法:字符串):

app/controllers/users\u controller.rb:19:in'login'

app/controllers/users\u controller.rb:5:在“登录”中


感觉就像我在追我的尾巴。我是不是在课堂上错过了一些简单的东西?我严格遵循了这个示例。

为什么不将子类ActiveModel::Base?

扩展ActiveModel::Naming

这就是你要找的