Как получить раздел CDATA, используя моющий камень? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть требование включить раздел CDATA в мой ответ SOAP. Я использую wash_out gem, и я не понимаю, как правильно включить раздел CDATA в ответ.

Вот что я попробовал:

soap_action "Result",
    args: {
      ...
    },
    return: {
      "ResultResult" => {
        "![CDATA" => {
          :@eResults => {
            status: :string,
            messages: {
              message: :string
            }
          }
        }
      }
    },
    to: :update_result

def update_result 
  .
  .
  .
  render :soap => {
    "ResultResult" => {
      "![CDATA" => {
        :@eResults => {
          status: "success",
          messages: {
            message: ""
          }
        }
      }
    }
  }
end

ВЫХОД Я получаю

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Body>
        <tns:ResultResponse>
            <tns:ResultResult xsi:type="tns:tns:ResultResult">
                <![CDATA xsi:type="tns:![CDATA" eResults=""></![CDATA> 
            </tns:ResultResult>
        </tns:ResultResponse>
    </soap:Body>
</soap:Envelope>

Но мне нужен ВЫХОД:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Body>
        <tns:ResultResponse>
            <tns:ResultResult xsi:type="tns:tns:ResultResult">
                <![CDATA[<eResults>
                    <status>success</status>
                    <messages>
                        <message>Some Message</message>
                    </messages>
                </eResults>]]>
            </tns:ResultResult>
        </tns:ResultResponse>
    </soap:Body>
</soap:Envelope>

Как мне достичь желаемого результата?

...