我的 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 %>