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

ruby-on-rails – 将Jasper集成到Rails 3中

发布时间:2020-12-17 04:38:10 所属栏目:百科 来源:网络整理
导读:我试图在这个wiki之后将rails 3应用程序与jasper集成: http://wiki.rubyonrails.org/rails/pages/HowtoIntegrateJasperReports 但似乎很多信息都没有更新,所以很难让它自己工作.我还在ruby-forum上阅读了一个主题:http://www.ruby-forum.com/topic/139453
我试图在这个wiki之后将rails 3应用程序与jasper集成:

http://wiki.rubyonrails.org/rails/pages/HowtoIntegrateJasperReports

但似乎很多信息都没有更新,所以很难让它自己工作.我还在ruby-forum上阅读了一个主题:http://www.ruby-forum.com/topic/139453
解释了一些细节,但仍然无法使其工作.

我的第一个问题与render_to_string方法有关:
当控制器方法运行时,我收到“模板丢失”错误:

这是方法:

def report
  @customers = Customer.all
  send_doc(render_to_string(:template => report_customers_path,:layout => false),'/pdfs','report.jasper',"customers",'pdf')
end

虽然这看起来很简单,但我不明白为什么会这样.不使用layout => render_to_string; false假装让我得到那个动作的字符串结果?
我也试过:动作而不是:模板,但它也是一样的.

如果任何具有这种集成专业知识的人可以帮助……
提前致谢,
安德烈

解决方法

我们实际上使用jasperreports来创建报告,最近升级到Rails 3.0.要创建xml,我们使用xml.erb模板. Jasper报告在一个单独的glassfish服务器中运行以下是一般概念:
url = URI.parse(my_url_string)
dataxml = render_to_string(:template => my_template_name).gsub(/n/,'')
params = {'type' => 'pdf','compiledTemplateURI' => my_jasper_file,'data' => dataxml }
request = Net::HTTP::POST.new(url.request_uri)
request.set_form_data(params)
obj = Net::HTTP.new(url.host,url.port)
obj.read_timeout = my_timeout_setting
response = obj.start { |http| http.request(request) }
case response
when Net::HTTPOK
  send_data(response.body,:filename => my_chosen_filename,:type => "application/pdf",:disposition => "inline")
else
  raise "failed to generate report"
end

(编辑:李大同)

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

    推荐文章
      热点阅读