Рельсы формируют несколько параметров XML - PullRequest
0 голосов
/ 06 апреля 2010

У меня есть форма (фрагмент)

<% form_for(@transfer, :html => {:multipart => true}) do |f| %>
  <p>
    <%= f.label :source %><br />
    <%= f.text_field :source %>
  </p>
  <p>
    <%= f.label :destination %><br />
    <%= f.text_field :destination %>
  </p>

  <% fields_for :upload do |u| %>
    <p>
      <%= u.label :upload %><br />
      <%= u.text_field :upload %>
    </p>
  <% end %>

  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', transfers_path %>

Так что теперь в моем контроллере переводов я могу сделать:

@transfer = Transfer.new(params[:transfer])
@upload   = Upload.find_or_create_by_md5(params[:upload])

Я могу отправить в одну форму с помощью XMLпросто изменив параметры на XML, например

<transfer>
    <source>foo</source>
    <destination>bar</destination>
</transfer>

или

<upload>
    <upload>baz</upload>
</upload>

Но я не могу понять, как объединить их в одном корне XML

Ответы [ 2 ]

0 голосов
/ 12 апреля 2010

Ну, я не смог понять, как сделать это для XML, поэтому сейчас мне пришлось согласиться сделать это с REST. Я наткнулся на библиотеку RestClient и, просматривая исходный код, понял, что вы можете использовать вложенные параметры, например:

RestClient.post( url, 
  { 
    :transfer => {
    :path => '/foo/bar',
    :owner => 'that_guy',
    :group => 'those_guys'
  },
  :upload => {
    :file => File.new(path)
  }
})

Отправить автору заметку о документировании функциональности здесь

0 голосов
/ 06 апреля 2010

Предполагая, что вы используете Rails 2.3.x, вы, возможно, захотите добавить accepts_nested_attributes_for к вашей Transfer модели.См. Что-s-новые-в-края-рельсы-вложенные атрибуты .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...