Я возвращаюсь в RoR после того, как не использовал его в течение нескольких лет, и я пытаюсь использовать ActiveModel для сериализации простого объекта в XML.Rails 3 ActiveModel :: Сериализаторы, похоже, нуждаются в множестве методов поддержки
Я делаю следующее, согласно комментариям в ActiveModel/Библиотека/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")
и I получить следующую трассировку стека:
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
класса, я затем получить ВОЛП lowing stacktrace:
NoMethodError (undefined method `element' for "XmlError":String):
app/controllers/users_controller.rb:19:in `login'
app/controllers/users_controller.rb:5:in `login'
Похоже, я преследую свой хвост здесь. Я просто пропустил что-то простое в своем классе? Я внимательно следил за этим примером.