イベントのレポートを生成するレポート ページがあります。日付ピッカーがあり、ユーザーは日付範囲 (例: 3 月 1 日~3 月 20 日) を入力して、イベントの :start_at がその範囲内で始まるすべてのイベントを返すことができます。私は最近、Rails 3.0.11 から Rails 3.2.13 にアップグレードしました (RailsCasts のエピソードを直接フォローし、3.0 から 3.1 に、次に 3.1 から 3.2 にジャンプするように注意しました)、レポートが機能しなくなったことに気付きましたが、何も作成していません。イベント コントローラまたはイベント モデルへの変更。私のコードは次のようになります。
events_controller.rb
def reports
if !params[:report_start].blank? && !params[:report_end].blank?
@events = current_user.events.report(params[:report_start], params[:report_end])
else
@events = current_user.events.where(params[:search]).order(sort_column + " " + sort_direction)
end
respond_to do |format|
format.html do
@events = @events.paginate(:per_page => 5, :page => params[:page])
end
format.xml { render :xml => @events }
format.pdf do
pdf = ReportPdf.new(@events)
send_data pdf.render, filename: "Event_Report.pdf",
type: "application/pdf"
end
end
end
event.rb
def self.report(report_start, report_end)
where(:start_at => report_start.to_date..report_end.to_date)
end
このようなクエリの構文は、アップグレード プロセスのどこかで変更されましたか?
Rails がまだ同じ形式で日付を保存しており、他の場所でも正しく機能していることを確認しました。Rails Console の日付出力は次のようになります。
start_at: "2013-04-25 00:00:00"
これは私を夢中にさせ、私には正しいように見えるので、どんな助けもいただければ幸いです。ありがとう!
編集:トピックに関するこのスタック オーバーフローの投稿を見つけました。その応答は、私のやり方でそれを行うように指示されているようですが、何も起こっていません。
レポートを生成するためにクリックした後、URL は変更され、生成される URL は次のようになります。
http://localhost:3000/reports?utf8=%E2%9C%93&direction=&sort=&event%5Breport_start%5D=&event%5Breport_end%5D=&commit=Generate+Report