その方法はうまくいきます。
必要な場所で XML を取得する方法については、他のデータと同じように渡すだけです。必要に応じて自動的に文字列に変換される Builder 表現を使用するか、文字列化された ( to_s
) バージョンの Builder オブジェクトを渡すことができます。
たとえば、モデル (これを OrderStatus と呼びます) が XML を生成し、コントローラーがリクエストを送信することが理にかなっている場合:
# Model (order_status.rb)
def to_xml
xml = Builder::XmlMarkup.new
... # Your code here
xml
end
# Controller (order_statuses_controller.rb)
def some_method
@order_status = OrderStatus.find(:some_criteria)
... # Your code here
http = Net::HTTP.new("www.thewebservicedomain.com")
response = http.post("/some/path/here", @order_status.to_xml)
end
HTTP 呼び出しを // ブロックでラップして、応答を処理したい場合もありますbegin
がrescue
、end
それ以外はすべて非常に簡単でシンプルです。
Builder で XML を作成し、送信します。
あなたの場合、注文が進むにつれて、いくつかの異なるリクエストを送信する必要があるように思えます。その場合:
- 可能な注文状態を計画します。
- 各状態で送信する必要があるデータを決定します。
- モデル内でその状態を表す方法を決定して、状態が変化したときに適切なリクエストを送信できるようにします。
この例では 1 つのメソッドを使用して XML を生成していますが、5 つのメソッドで 5 つの可能な順序状態を処理する必要があるかもしれません。