Как я могу остановить рельсы, проверяющие xml? - PullRequest
0 голосов
/ 20 апреля 2010

Я отправляю на веб-сервис rails следующее сообщение:

xmlPostData = "<message>
                   <message-text>" + MESSAGE_WITH_XML  + "</message-text>
                   <name>" + subject + "</name>
                   <f1>" + toPhone + "</f1>
                   <f2>" + fromPhone + "</f2>
               </message>";

Проблема в том, что поле, содержащее текст с данными XML, является обходным путем, но мне нужно иметь возможность отправить этот xml в БД и получить его оттуда.

Могу ли я остановить рельсы, проверяющие и заменяющие мой xml в формате json? Вот как это выглядит:

    --- !map:HashWithIndifferentAccess 
smil: !map:HashWithIndifferentAccess 
  head: !map:HashWithIndifferentAccess 
    layout: !map:HashWithIndifferentAccess 
      root_layout: !map:HashWithIndifferentAccess 
        height: &quot;600&quot;
        background_color: white
        width: &quot;800&quot;
      type: text/smil-basic-layout
  body: !map:HashWithIndifferentAccess 
    par: !map:HashWithIndifferentAccess 
      text: !map:HashWithIndifferentAccess 
        left: &quot;33&quot;
        begin: &quot;33&quot;
        dur: &quot;33&quot;
        val: 34343434343434343aaaaaaa
        height: &quot;33&quot;
        width: &quot;33&quot;
        top: &quot;33&quot;

И это метод ruby ​​из веб-сервиса rails:

# POST /messages
  # POST /messages.xml
  def create
    @message = Message.new(params[:message])

    respond_to do |format|
      if @message.save
        flash[:notice] = 'Message was successfully created.'
        format.html { redirect_to(@message) }
        format.xml  { render :xml => @message, :status => :created, :location => @message }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @message.errors, :status => :unprocessable_entity }
      end
    end
  end

Это обходной путь, но на данный момент это должно сработать ...

1 Ответ

1 голос
/ 20 апреля 2010

Если вам просто нужно вставить произвольный текст, вы должны использовать CDATA. Просто убедитесь, что строка ]]> не отображается в MESSAGE_WITH_XML.

xmlPostData = "<message>
                   <message-text><![CDATA[" + MESSAGE_WITH_XML  + "]]></message-text>
                   <name>" + subject + "</name>
                   <f1>" + toPhone + "</f1>
                   <f2>" + fromPhone + "</f2>
               </message>";
...