1

我試圖解決這個問題千種不同的方式看着幾十個StackOverflow帖子以及外部教程處理DateTime,引導datetimepicker,格式化,strptime,strftime等等,沒有解決方案。我現在有一個基本問題可以幫助我前進。爲什麼在控制檯中購買不在我的應用中?

爲什麼在我的控制檯做這項工作:

DateTime.strptime("09-29-2016 03:29 PM", "%m-%d-%Y %I:%M %p") 
    => Thu, 29 Sep 2016 15:29:00 +0000 

但這種失敗在我的應用程序:

@image.start_at = DateTime.strptime(params[:start_at].to_s, "%m-%d-%Y %I:%M %p") 
=>ArgumentError in ImagesController#create 
invalid date 

我start_at參數來通過爲:

..."start_at"=>"09-29-2016 03:29 PM"},... 

而且,這不適用於我的應用程序:

@image.start_at = DateTime.strptime(@image.start_at.to_s, "%m-%d-%Y %I:%M %p") 
+0

嗯,這是奇怪的。它也很好地運行在我的控制檯中。您是否嘗試在文件頂部添加'require'time'' 'require'date''? –

+0

要求'日期'一直在我的形象模型上,大部分時間我一直在試圖找出這個問題。我最近將它添加到圖像控制器,以確保我可以在任何需要它的地方使用它。 – Lenocam

+0

@AndreyDeineko start_at是我image_params的一部分。本質上,它是一個在我的圖像模型上存儲日期的列。我試圖使用美國風格的日期和時間格式適當的後端軌道 – Lenocam

回答

1

這應該只是罰款:

@image.start_at = Date.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p") 

說明:

  1. 你不必把它轉換爲字符串 - params中什麼是一個字符串;
  2. 由於start_at的類型爲Date,因此應該將Date對象傳遞給它,而不是DateTime對象。

如果您start_atIS日期時間型(沒有日期,你的意見已經說過了),

會工作。

+0

我現在收到這個錯誤'TypeError ImagesController#創建 沒有隱式轉換爲零的字符串'我的參數通過錯誤仍然通過看起來像這樣''start_at「=>」09-29-2016 04:28 PM「},'所以我不明白爲什麼它會認爲它是'nil'。 – Lenocam

+0

@Lenocam請在'@image.start_at = ...'代碼上面添加一個'binding.pry'並進行調試。當rails服務器終端窗口打開控制檯時,輸入:'params [:start_at]' - 確保它在那裏。比,運行實際的代碼,看看,如果它的工作。 –

+0

因此,我在控制檯中運行pry並輸入了params [:start_at],它響應了'nil',我不明白爲什麼它是零。你是什​​麼意思「運行實際的代碼」? – Lenocam

相關問題