我有一个表单,它使用日期范围值生成一个包含Jasper Reports的报告
报告/ statistic.html.erb
<%= form_tag("/reports/statistic", :method => "post", :target => "_blank") do %>
<%= label_tag(:from_date, "From Date:") %>
<%= text_field_tag :from_date %>
<%= label_tag(:to_date, "To Date:") %>
<%= text_field_tag :to_date %>
<br><br>
<%= submit_tag("Generate Report") %>
<% end %>
这是 reports_controller.rb
def statistic
@details=StatisticTable.where(:dateindb => (params[:from_date])..(params[:to_date])
send_doc(render_to_string(
:template => 'reports/statistic.xml', :layout => false), #source of xml and template
'/statistic/detail', #xml xpath2 query in reports
'statisticreport', #name of .jasper file
'StatisticReport', #name of pdf file
'pdf')
end
当我点击Generate Report按钮时,报告会在新窗口的pdf查看器中很好地显示。但是当我尝试保存pdf文件时,pdf为空,日期值返回为null。
另外,我按照本教程http://oldwiki.rubyonrails.org/rails/pages/HowtoIntegrateJasperReports解释了send_doc方法的来源。
我不认为问题出在Jasper中,因为如果我替换这个
@details=StatisticTable.where(:dateindb => (params[:from_date])..(params[:to_date])
具有预定义的日期值
@details=StatisticTable.where(:dateindb => ('2011-12-01')..('2011-12-31')
报告显示并完美保存。所以我猜我的Ruby on Rails变量设置有问题吗?
谢谢!
答案 0 :(得分:1)
我只通过将表单方法更改为GET
来解决这个问题<%= form_tag("/reports/statistic", :method => "get", :target => "_blank") do %>
<%= label_tag(:from_date, "From Date:") %>
<%= text_field_tag :from_date %>
<%= label_tag(:to_date, "To Date:") %>
<%= text_field_tag :to_date %>
<br><br>
<%= submit_tag("Generate Report") %>
<% end %>
在以PDF格式生成报告后,我点击了保存,PDF完全保存了整个数据。