Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 使用表单提交选择PDF导出期间的月份。_Ruby On Rails 3_Date_Activerecord - Fatal编程技术网

Ruby on rails 3 使用表单提交选择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

我有一个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.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方法只是格式化这些参数