在几年不使用 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_controller.rb:19:in `login'
app/controllers/users_controller.rb:5:in `login'
如果创建一个model_name
类方法,我会得到以下堆栈跟踪:
NoMethodError(“XmlError”的未定义方法“元素”:字符串):
app/controllers/users_controller.rb:19:in `login'
app/controllers/users_controller.rb:5:in `login'
感觉就像我在这里追逐我的尾巴。我刚刚在课堂上错过了一些简单的事情吗?我密切关注这个例子。