2017-04-21 63 views
0

基本上,在我看來,rails控制檯中的哪些工作看起來不起作用 - 我有一個工作室模型,其中包含日期時間類型的「start_date」列。
我創建這種類型的對象,當我進入軌道控制檯
無法從日期時間在Rails視圖中獲取一天

Workshop.find(<id>).start_date.day 

返回特定的某一天預期(例如,在日期時間的情況下,「21」「星期五,2017年4月21日17:00:00 UTC +00:00' )。

但是,在我看來,我無法使用'天'的方法。我使用的是修身的寶石,這代碼我型我秀鑑於車間:

p= workshop.start_date.day 

導致此錯誤:未定義的方法'天」的零:NilClass
但代碼

p= workshop.start_date 

正確顯示整個日期和代碼

p= workshop.start_date.class 

顯示對象的類是:ActiveSuppo rt :: TimeWithZone

發生了什麼,Rails爲什麼說這個類是零,如何使它工作?

+2

我想有一些記錄的start_date屬性爲'nil'。這是錯誤的原因。您可以請在視圖中添加一個條件,並檢查'​​workshop.start_date.day if workshop.start_date'可能這會幫助您捕獲這些錯誤。 –

+0

我很遲鈍 - 謝謝,那就是它。我正在開發領域,並沒有打開這個驗證,所以有一個對象與此字段設置爲零 - 這不會在未來的情況下。 – bochen421

+0

不用擔心。編碼時發生這種情況。歡呼快樂編碼。 –

回答

2

請使用享有以下,

p= workshop.start_date.day if workshop.start_date 

我想一些記錄有起始日期屬性爲零,這是觀點拋出錯誤的原因。

+2

這也是我的猜測。我會補充一點,使用Ruby 2.3中引入的安全導航器是一種更加優雅的方式,可以在視圖中處理此問題:'p = workshop&.start_date&.day'。 閱讀更多關於它在這裏:http://mitrev.net/ruby/2015/11/13/the-operator-in-ruby/ – thirdsun

+0

很酷。這也是一個最好的方法。希望運作良好。乾杯。 –