【发布时间】:2011-10-21 17:26:14
【问题描述】:
@rubiii 之前曾向 (Savon soap body problem) 展示过您可以使用自定义 Savon 请求
class SomeXML
def self.to_s
"<some>xml</some>"
end
end
client.request :some_action do
soap.body = SomeXML
end
但是你为什么要使用这样的类方法呢?您似乎更有可能要求一个类的实例将自己变成请求正文的散列。即
@instance = SomeClass.new
client.request :some_action do
soap.body = @instance.to_soap
end
但是,当我尝试这样做时,@instance 变量不在请求块的“范围”内。所以我在 nil 上得到了一个无法调用的方法 to_soap。但是,如果我改为使用类方法,那么我可以让它工作。即
class SomeClass
@@soap_hash = nil
def self.soap_hash=(hash)
@@soap_hash = hash
end
def self.soap_hash
@@soap_hash
end
end
SomeClass.soap_hash = @instance.to_soap
client.request :some_action do
soap.body = SomeClass.soap_hash
end
没听懂?
【问题讨论】: