我有一个生成事件报告的报告页面。有一个日期选择器,用户可以输入一个日期范围(例如 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
事件.rb
def self.report(report_start, report_end)
where(:start_at => report_start.to_date..report_end.to_date)
end
像这样的查询语法在升级过程中的某个地方是否发生了变化?
我确认 Rails 仍然以相同的格式保存日期,并且在其他任何地方都可以正常工作。Rails 控制台中的日期输出如下所示:
start_at: "2013-04-25 00:00:00"
任何帮助将不胜感激,因为这让我发疯并且对我来说看起来是正确的。谢谢!
编辑:我在该主题上找到了这篇 Stack Overflow 帖子,看起来回复说要按我的方式做,但什么也没发生。
单击生成报告后,URL 确实发生了变化,生成的 URL 如下所示:
http://localhost:3000/reports?utf8=%E2%9C%93&direction=&sort=&event%5Breport_start%5D=&event%5Breport_end%5D=&commit=Generate+Report