Ruby 在 rails。范围的错误值
Ruby on rails. bad value for range
我正在尝试将日期变量从表单传递到方法,以根据数据库中的 created_at 字段导出信息。但是当我从我的表单发送日期格式值时,我收到 "bad value for range" 错误。我认为这是因为可变日期格式和数据库中的格式不匹配。有什么解决办法吗?
这是我使用简单表单创建的 .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
这是我收到错误的地方:
有什么解决办法吗?
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
您的 date
局部变量不是日期时间,只是一个字符串。您正在尝试创建一个两端具有不同类型的范围,这是不允许的。
我正在尝试将日期变量从表单传递到方法,以根据数据库中的 created_at 字段导出信息。但是当我从我的表单发送日期格式值时,我收到 "bad value for range" 错误。我认为这是因为可变日期格式和数据库中的格式不匹配。有什么解决办法吗?
这是我使用简单表单创建的 .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
这是我收到错误的地方:
有什么解决办法吗?
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
您的 date
局部变量不是日期时间,只是一个字符串。您正在尝试创建一个两端具有不同类型的范围,这是不允许的。