ActionView::Template::Error (undefined method `strftime' for nil:NilClass)

Hello, I’m a newbie. I need help resolving this issue. I recently added a pdf to the newsletter admin section of the website and now I can no longer view page 2 of the list of pdf’s. Nor can I login to see the newsletters as a student. I’m using Ruby 1.9.3, Rails 3.2.1.

Here’s the information from the log file.

ActionView::Template::Error (undefined method `strftime’ for nil:NilClass):

28:         <%- locals = {:enewsletter => enewsletter} %>

29:         <td nowrap="nowrap" class='enewsletter_name'><%= enewsletter.subscription.title %></td>

30:                                       <td nowrap="nowrap"><%=enewsletter.title%></td>

31:                                       <td nowrap="nowrap"><%=enewsletter.publication_date.strftime("%m/%Y")%></td>

32:                                       <td nowrap="nowrap"> <%=enewsletter.require_ama_disclaimer%></td>

33:                                       <td>

34:                   <%#= link_to("Edit Release", edit_admin_release_path(release), edit_admin_release_path(release)) %> &nbsp;

app/views/admin/enewsletters/index.html.erb:31:in `_app_views_admin_enewsletters_index_html_erb__1819630787_23456257799140_0’

app/views/admin/enewsletters/index.html.erb:26:in `each’

app/views/admin/enewsletters/index.html.erb:26:in `_app_views_admin_enewsletters_index_html_erb__1819630787_23456257799140_0’

app/controllers/admin/enewsletters_controller.rb:17:in `index’

Please advise

Hi, you can see the error in this log:

ActionView::Template::Error (undefined method `strftime’ for nil:NilClass):
nil.strftime("%m/%Y") doesn’t exists

31:                                       <td nowrap="nowrap"><%=enewsletter.publication_date.strftime("%m/%Y")%></td>

enewsletter.publication_date is nil

Matt’s

The message says that enewsletter.publication_date is nil. Check the database to make sure that all instances have a valid date for this field. you should add a validation to the model to prevent creating a row with a nil value.

I replaced line 31 with the following text:

<%unless enewsletter.publication_date.nil?%><%=enewsletter.publication_date.strftime("%m/%Y")%>

I still get the page We’re sorry but something went wrong.

I found another error message.

Started GET “/enewsletters” for 74.7.15.131 at Wed Jun 20 13:42:07 -0500 2012

Processing by EnewslettersController#index as HTML

Rendered enewsletters/index.html.erb within layouts/spree_application (23.5ms)

Completed 500 Internal Server Error in 45ms

ActionView::Template::Error (undefined method `strftime’ for nil:NilClass):

17:                                                          <%newsletter_url = "/enewsletter_download/#{enewsletter.id.to_s}"%>

18:                                                <%end%>

19:                                       <a href="<%=newsletter_url%>" class="enewsletter_link">

20:                                       <h3><%=enewsletter.publication_date.strftime("%m/%Y")%> | <%=enewsletter.title%></h3>

21:                                                </a>

22:                                       </li>

23:                                       <%if enewsletter.posttest.exists?%>

app/views/enewsletters/index.html.erb:20:in `_app_views_enewsletters_index_html_erb___1681926547_23456253999680_0’

app/views/enewsletters/index.html.erb:12:in `_app_views_enewsletters_index_html_erb___1681926547_23456253999680_0’

app/views/enewsletters/index.html.erb:9:in `_app_views_enewsletters_index_html_erb___1681926547_23456253999680_0’

app/controllers/enewsletters_controller.rb:14:in `index’