Ruby on rails。范围不好

时间:2015-10-09 07:31:43

标签: ruby-on-rails ruby haml simple-form

我正在尝试将日期变量从表单传递给方法,以根据数据库中的created_at字段导出信息。但是当我从我的表单发送日期格式值时,我得到“范围错误值”错误。我认为这是因为数据库中的可变日期格式和格式不匹配。任何想法如何解决?

这是我用简单形式创建的.haml表单:

= simple_form_for :download, { url: download_exports_path('xlsx') } do |f|
  = f.input :date, as: :date, html5: true
  = f.button :submit, "Export"

这是我的控制器中的下载方法:

   def download
      current_time = Time.now
      date = params[:date]
      @addresses = Address::where(created_at: date..DateTime.now.end_of_day)
        respond_to do |format|
          format.xlsx {render xlsx: 'download',filename: "addresses.xlsx"}
        end
   end

这是我得到错误的地方: enter image description here

任何想法如何解决?

2 个答案:

答案 0 :(得分:1)

where子句应以点开头,您也应该使用to_datetime将日期参数转换为正确的格式。

def download
  current_time = Time.now
  date = params[:download][:date].to_datetime
  @addresses = Address.where(created_at: date..DateTime.now.end_of_day)
    respond_to do |format|
      format.xlsx {render xlsx: 'download',filename: "addresses.xlsx"}
    end
end

答案 1 :(得分:0)

您的date局部变量不是DateTime,只是一个字符串。你试图创建一个在每一端都有不同类型的范围,不允许。