2010-08-25 6 views
0

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?

Répondre

0

Pourquoi pas la sous-classe ActiveModel :: Base?