RoRを数年間使用しなかった後、RoRに戻り、ActiveModelを使用してプレーンオブジェクトをXMLにシリアル化しようとしています。
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(XmlError:Classの未定義のメソッド `model_name'):
app / controllers / users_controller.rb:19:in `login '
app / controllers / users_controller.rb:5:in `login '
クラスメソッドを作成するmodel_name
と、次のスタックトレースが得られます。
NoMethodError( "XmlError":Stringの未定義のメソッド `element'):
app / controllers / users_controller.rb:19:in `login '
app / controllers / users_controller.rb:5:in `login '
ここで尻尾を追いかけているような気がします。クラスで簡単なことを見逃したことがありますか?私はその例に厳密に従った。