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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 将Jasper集成到Rails 3中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在这个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
原文链接:https://www.f2er.com/ruby/269608.html

猜你在找的Ruby相关文章