0


1

Rails 3 ActiveModel :: Serializersには多くのサポートメソッドが必要なようです

数年使用しなかった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 ' _ _

ここで尾を追いかけているような気がします。 クラスで簡単なものを見逃したことがありますか? 私はこの例に厳密に従いました。

2 Answer


2


`ActiveModel

Namingの拡張`

あなたが探しているものです。


0


なぜActiveModel

Baseをサブクラス化しないのですか?