Мое приложение rails создает XML, когда я загружаю /reports/generate_report.
На отдельной странице я хочу прочитать этот XML-код в переменную и сохранить его в базе данных.
Как я могу это сделать? Могу ли я каким-то образом передать ответ из URI /reports/generate_report.xml в переменную? Или есть лучший способ сделать это, поскольку XML создается одним и тем же веб-приложением?
Вот мое действие generate_report:
class ReportsController < ApplicationController
def generate_report
respond_to do |format|
@products = Product.all
format.xml { render :layout => false }
end
end
end
Вот действие, которое я пытаюсь написать:
class AnotherController < ApplicationController
def archive_current
@output = # get XML output produced by /reports/generate_report
# save @output to the database
respond_to do |format|
format.html # inform the user of success or failure
end
end
end
Решено: Мое решение (спасибо Младену Яблановичу):
@output = render_to_string(:file => 'reports/generate_report.xml.builder')
Я использовал следующий код в классе модели для выполнения той же задачи, поскольку render_to_string (идиотски) является защищенным методом ActionController :: Base:
av = ActionView::Base.new(Rails::Configuration.new.view_path)
@output = av.render(:file => "reports/generate_report.xml.builder")