Active レコードにバインドされていないモデル クラスがあります。
class ProcessingStatus
attr_accessor :status, :timestamp
end
モデルは処理ステータス ホルダーとして機能し、最終的に呼び出し元のメソッドに返されます。
これはアクティブなリソース メソッドとして呼び出されるため、xml として戻す (シリアル化する) 必要があります。これが私のアクションメソッドです:
def activate
@process_status = ProcessingStatus.new
if Account.activate(params[:account])
@process_status.status = "success"
else
@process_status.status = "fail"
end
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @process_status }
end
end
ただし、これは有効なxmlを返していないようです。
@process_status
以下のように出力しようとすると
return render :text => "The object is #{@process_status}"
これは私が得るものです:
オブジェクトは #<ProcessingStatus:0x00000005e98860> です。
私が欠けているものを教えてください。
編集#1、
以下のコメントに基づいて、シリアル化ライブラリを含めるようにコードを変更しました。
class ProcessingStatus
include ActiveModel::Serialization
include ActiveModel::Serializers::JSON
include ActiveModel::Serializers::Xml
attr_accessor :status
def attributes
@attributes ||= {'status' => 'nil'}
end
end
私は近づいています :) .xml リクエストに対して次のような出力が得られます。割り当てた値が反映されません。
@process_status.status = "success" / "fail"
<processing-status><status>nil</status></processing-status>
しかし、jsonリクエストを行うと、正しく表示されます!
{"processing_status":{"status":"success"}}