2016-06-09 57 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

希望这会对您有所帮助。