加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails中将页面加载到内存中

发布时间:2020-12-17 02:26:48 所属栏目:百科 来源:网络整理
导读:我的rails应用程序在加载/ reports / generate_report时生成 XML. 在单独的页面上,我想将此XML读入变量并将其保存到数据库中. 我怎样才能做到这一点?我可以以某种方式将/reports/generate_report.xml URI的响应流式传输到变量中吗?或者是否有更好的方法来
我的rails应用程序在加载/ reports / generate_report时生成 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

解决:我的解决方案(感谢MladenJablanovi?):

@output = render_to_string(:file => 'reports/generate_report.xml.builder')

我在模型类中使用以下代码来完成相同的任务,因为render_to_string是(idiotically)ActionController :: Base的受保护方法:

av = ActionView::Base.new(Rails::Configuration.new.view_path)
@output = av.render(:file => "reports/generate_report.xml.builder")

解决方法

也许您可以将XML呈现逻辑提取到同一控制器(可能是私有控制器)中的单独方法,这将使用 render_to_string将XML呈现为字符串,并从generate_report和archive_current操作中调用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读