рельсы: хранить вывод XML-компоновщика в базе данных - PullRequest
0 голосов
/ 04 октября 2010

В приложении rails (2.3), которое я собирал, у меня есть конструктор XML, который выводит аккуратный XML. Мне нужно сделать снимок этого XML и сохранить его в базе данных (или файле) после определенного действия пользователя.

Как я могу получить выходные данные представления XML Builder из середины другого действия?

Этот код вызывает тупик в однопоточном приложении ...

    uri = URI.parse("http://localhost:3000")
    response = Net::HTTP.start(uri.host, uri.port) {|http|
      http.head('/xmliwanttoarchive.xml')
    }

Не уверен, как подойти к этому .. Ура.

1 Ответ

0 голосов
/ 25 октября 2010

Выше приведен неверный способ вызова xml builder.

Я переопределил метод to_xml вместо использования представления xml.builder

def to_xml(options={})
  if options[:builder]
    build_xml(options[:builder])
  else
    xml = Builder::XmlMarkup.new
    xml.instruct!
    build_xml(xml)
  end
  xml
end

def build_xml(xml)
  xml.foo("id" => id, "title" => title) do
  xml.group("id" => group.id, "name" => group.name)
  xml.bars do
    bar.each do |session|
      xml.bar("id" => bar.id, "session_time" => bar.important_thing)
    end
  end
end

Теперь его можно легко использовать из кода и из действия

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