我有一个未绑定到活动记录的模型类。
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"}}