我回到RoR後沒有使用它幾年,我試圖用ActiveModel序列化一個普通的對象到XML。Rails 3 ActiveModel :: Serializer似乎需要大量的支持方法
我做以下,按照該意見在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 (undefined method `model_name' for XmlError:Class):
app/controllers/users_controller.rb:19:in `login'
app/controllers/users_controller.rb:5:in `login'
如果創建一個model_name
類的方法,我再拿到FOL降低堆棧跟蹤:
NoMethodError (undefined method `element' for "XmlError":String):
app/controllers/users_controller.rb:19:in `login'
app/controllers/users_controller.rb:5:in `login'
感覺就像我在這裏追逐我的尾巴。我在課堂上錯過了一些簡單的東西嗎?我緊跟這個例子。