2015-10-09 3 views
1

Я пытаюсь передать переменную даты из формы в метод для экспорта информации на основе поля 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

Любые идеи, как это решить?

ответ

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 
+0

Это говорит о неопределенном методе 'to_datetime 'для nil: NilClass, если я действительно так сказал, что .to_datetime –

+1

Это потому, что' params [: date] 'равно нулю. Вероятно, это должно быть 'params [: download] [: date]', если я правильно вижу ваши параметры запроса. – IngoAlbers

+0

Спасибо, человек! Оно работает. –

0

Локальная переменная date не является DateTime, а просто строкой. Вы пытаетесь создать диапазон, который имеет разные типы на каждом конце, не допускается.

Смежные вопросы