我是新手,偶然发现了一个问题。
我正在尝试构建此笔记/会议应用程序,并且在使用strftime时遇到nil:NilClass 错误的未定义方法'strftime'。我正在使用simple_calendar。
这是错误来源:
<div class="form-inputs">
<%= f.input :name %>
<%= meeting.starts_at.strftime("%B %e, %Y,%l:%M %p") %>
</div>
在另一面,例如,在以下位置调用strftime方法即可:
<li id="m-time"><%= meeting.created_at.strftime("%m/%d/%y") %></li>
帮助?
答案 0 :(得分:0)
问题是meeting.starts_at
是nil
。您进行其他通话的原因是,meeting.create_at
是一个日期,它响应strftime
消息,而nil
是一个日期。
如何防止meeting.starts_at
成为nil
取决于meeting
值的来源。也许您想添加更好的验证,以便没有starts_at
日期就无法创建会议。或者,如果没有开始日期有效,则应在尝试访问<% if meeting.starts_at %>
的部分周围添加一个<% end %>
meeting.starts_at
块,以便在没有开始日期的情况下不呈现任何内容。如果没有会议开始日期,您还可以添加一个<% else %>
块以呈现不同的内容。
答案 1 :(得分:0)
问题:meeting.starts_at
是nil
。您无法在nil
上调用该方法。
解决方案:
确保在会议模型中您具有返回非nil值的方法或名称为starts_at
的属性,并带有验证presence: true
以确保非- nil值未存储在其中。
使用meeting.starts_at&.strftime("%B %e, %Y,%l:%M %p")
来避免崩溃,以防万一starts_at
是nil