Ruby on rails 3 使用表单提交选择PDF导出期间的月份。
我有一个Rails 3.2应用程序,其模型名为Mileages。我使用Prawn PDF添加了里程索引操作的PDF输出 里程控制器的索引操作如下所示:Ruby on rails 3 使用表单提交选择PDF导出期间的月份。,ruby-on-rails-3,date,activerecord,Ruby On Rails 3,Date,Activerecord,我有一个Rails 3.2应用程序,其模型名为Mileages。我使用Prawn PDF添加了里程索引操作的PDF输出 里程控制器的索引操作如下所示: def index @mileages = Mileage.find_all_by_user_id(current_user.id) @mileages_months = Mileage.find_all_by_user_id(current_user.id).group_by { |t| t.created_at.beginni
def index
@mileages = Mileage.find_all_by_user_id(current_user.id)
@mileages_months = Mileage.find_all_by_user_id(current_user.id).group_by { |t| t.created_at.beginning_of_month }
respond_to do |format|
format.html # index.html.erb
format.json { render json: @mileages }
format.pdf do
pdf = MileagePdf.new(@mileages, view_context)
send_data pdf.render, filename: "mileages_report.pdf",
type: "application/pdf",
disposition: "inline"
end
end
end
@mileages = Milage.where(:date => ??..??)
我想做的是,在索引视图上有一个指向PDF版本的链接,但旁边会有一个开始日期和结束日期。PDF将只显示这两个日期之间的里程条目
PDF链接将非常简单
activerecord过滤器大概是这样的:
def index
@mileages = Mileage.find_all_by_user_id(current_user.id)
@mileages_months = Mileage.find_all_by_user_id(current_user.id).group_by { |t| t.created_at.beginning_of_month }
respond_to do |format|
format.html # index.html.erb
format.json { render json: @mileages }
format.pdf do
pdf = MileagePdf.new(@mileages, view_context)
send_data pdf.render, filename: "mileages_report.pdf",
type: "application/pdf",
disposition: "inline"
end
end
end
@mileages = Milage.where(:date => ??..??)
我不确定如何将上述内容与日期输入联系起来。任何帮助都将不胜感激 既然你有日期,试着用一种表单提交
<%= form_tag(mileages_path(format: :pdf), method: :get) do -%>
<%= date_select("mileage_start", "date", order: [:year,:month,:day])%>
<%= date_select("mileage_end", "date", order: [:year,:month,:day])%>
<%= submit_tag %>
<%end%>
通过这种方式,您可以从参数中捕获日期,并以您想要的方式对其进行格式化,然后将其放入查询中。控制器代码是什么?Milage.where:date=>{start}..{end}?如果我理解正确,那么代码示例中较低的应该放在我的索引方法中-但是我得到了nil:NilClass的未定义方法值“对不起,我的坏..”。。如果date_hsh更新了date_formatter方法,我就错过了。我对开始日期和里程数的混合感到有点困惑。还有,我如何将这些参数拉入控制器查询?@dannymcc,不要被里程数_start搞糊涂了,它只是为选择字段指定的一个名称,该字段随日期选择一起出现。我已经用您可以检查表单提交中的参数的方式更新了控制器。我希望这能帮助你们理解日期是如何作为参数出现在控制器中的。date_formatter方法只是格式化这些参数