2010-08-25 2 views
0

Я возвращаюсь в 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'

Похоже, я преследую свой хвост здесь. Я просто пропустил что-то простое в своем классе? Я внимательно следил за этим примером.

ответ

Смежные вопросы