2016-06-09 61 views
0

當Rails應用程序不顯示我有一個名爲數據類型:日期請求一年場

t.date :finishdate 

而且我有一個選擇欄:

<%= f.select :finishdate, (Time.zone.now.year - 10)..(Time.zone.now.year) + 5,{}, class: "form-control" %> 

,但我似乎無法顯示年?目前我使用的是:

<%= w.finishdate %> 

但沒有顯示,我也嘗試:

<%= w.finishdate.year %> 

但隨後得到一個錯誤

undefined method `year' for nil:NilClass 

任何想法?

+0

'finishdate'似乎返回'nil'。你確定它確實設置了嗎? –

回答

0

玩弄文本字段後,我得到了它使用這個工作:

<div class="form-group"> 
     <label for="usr">Completed in:</label> 
     <%= f.date_select :finishdate , { discard_day: true, discard_month: true }, { :class => 'form-control' } %><br/> 
    </div> 
-1
<%= w.finishdate.strftime('%Y') %> 
+0

如果'w.finishdate'返回'nil',這也會產生錯誤。 –

0

試試這個

<%= w.finishdate.strftime('%Y') if w.finishdate.present? %> 
+0

一些解釋會使這一點的代碼更清晰 – iGbanam

+0

雖然這個代碼可能回答這個問題,提供 關於_why_和/或_how_的附加上下文,它回答 該問題將顯着提高其長期 價值。請[編輯]你的答案,添加一些解釋。 –

0

這將始終設置爲零,以finishdate。因爲,這將永遠retrun

2.0.0-p0 :006 > (Time.zone.now.year - 10)..(Time.zone.now.year + 5) 
=> 2006..2021 

如果您嘗試保存2006年或一年中finishdate領域。您將獲得nil,因爲您的字段類型爲date而不是string

希望這會對您有所幫助。