Je retourne à RoR après ne pas l'avoir utilisé pendant quelques années et j'essaie d'utiliser ActiveModel pour sérialiser un objet ordinaire en XML.Rails 3 ActiveModel :: Serializers semblent avoir besoin de beaucoup de méthodes de support
que je fais ce qui suit, selon les commentaires dans 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
J'utiliser dans un contrôleur comme:
render :xml => XmlError.new("invalid_login")
et je obtenir le stacktrace suivant:
NoMethodError (undefined method `model_name' for XmlError:Class):
app/controllers/users_controller.rb:19:in `login'
app/controllers/users_controller.rb:5:in `login'
Si créer une méthode de classe model_name
, je puis obtenir le fol stacking basing:
NoMethodError (undefined method `element' for "XmlError":String):
app/controllers/users_controller.rb:19:in `login'
app/controllers/users_controller.rb:5:in `login'
Il se sent comme si je suis ma queue ici. Ai-je manqué quelque chose de simple dans ma classe? J'ai suivi l'exemple de près. Pourquoi pas la sous-classe ActiveModel :: Base?