缺少Ruby on Rails form_tag参数

时间:2012-01-26 10:23:07

标签: ruby-on-rails-3 variables date jasper-reports

我有一个表单,它使用日期范围值生成一个包含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变量设置有问题吗?

谢谢!

1 个答案:

答案 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完全保存了整个数据。