/reports/generate_report を読み込むと、Rails アプリが XML を生成します。
別のページで、この XML を変数に読み込み、データベースに保存したいと考えています。
これどうやってするの?/reports/generate_report.xml URI からの応答を変数にストリーミングすることはできますか? それとも、XML は同じ Web アプリによって生成されるので、それを行うためのより良い方法はありますか?
ここに私の 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
解決済み:私の解決策 (Mladen Jablanović に感謝):
@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")