Rails アプリケーションに静的ページがあり、ユーザーがフォームで 2 つの日付を選択すると、それら 2 つの入力に基づいて損益計算書が生成されます。これはうまくいきます。ただし、同じページに 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 %>