0

我的 Rails 应用程序中有一个静态页面,用户可以在其中选择表单中的两个日期,然后根据这两个输入生成损益表。这工作正常。但是,在同一页面上,我还可以选择生成 PDF(我使用的是 prawn gem)。在控制器中,我将实例变量发送给虾。现在,当我生成 PDF 时,它会将日期值显示为:

@date1 = Date.today - 1.month
@date2 = Date.today

即使用户使用新日期更新了表单。传递给 prawn 的实例变量的值来自服务器第一次生成页面时的值(即使这些实例变量的值随着后续表单提交而改变)。是否可以将更新的值传递给大虾(在用户提交表单后)?如果是这样,我该怎么做?

def income
  if (params.has_key?(:date1) && params.has_key?(:date2))
      year1 = params[:date1][0...4].to_d
      month1 = params[:date1][5...7].to_d
      day1 = params[:date1][8...10].to_d
      year2 = params[:date2][0...4].to_d
      month2 = params[:date2][5...7].to_d
      day2 = params[:date2][8...10].to_d
     @date1 = Date.new(year1,month1,day1)
     @date2 = Date.new(year2,month2,day2)
  else  
     @date1 = Date.today - 1.month
     @date2 = Date.today
  end 

  respond_to do |format|
      format.html
      format.js
      format.pdf do
        pdf = IncomePdf.new(@date1, @date2)
        send_data pdf.render, filename: "Income Statement #{@date1} to #{@date2}",
                          type: "application/pdf",
                          disposition: "inline"
     end
  end

end 

视图中的表单如下所示:

<%= form_tag "/income", :method => :post, :remote => true, :html => {:class => "form-horizontal"} do %>
4

0 回答 0