Ruby on rails Rails 3 ActiveModel::序列化程序似乎需要很多支持方法
在几年没有使用RoR之后,我又回到了RoR,我尝试使用ActiveModel将一个普通对象序列化为XML 根据activemodel/lib/activemodel/serialization.rb中的注释,我正在执行以下操作: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
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
这就是你要找的