It looks like your duedate is a string, when strftime is a method for Time/Date class. You can try this:
Date.parse(task.duedate).strftime("%B %e, %Y")
Question
I am getting the error
undefined method `strftime' for "2013-03-06":String
when trying to display a date normally (June Sunday 3, 2013 or something similar) from the string 2013-03-06 using strftime.
The line that does this in my index.html.erb and looks like this
<td><%= task.duedate.strftime("%B %e, %Y") %></td>
I am just learning Rails so I am sure it is just a stupid beginners error, any help would be appreciated. Thank you
Solution
It looks like your duedate is a string, when strftime is a method for Time/Date class. You can try this:
Date.parse(task.duedate).strftime("%B %e, %Y")
OTHER TIPS
This solved the issue for me:
Date.created_at.try(:strftime, ("%B %e, %Y"))
Hope this helps!
You are storing the datetime as a string and not as an actually datetime. You will need to create a new migration like the following
change_table :tasks do |t|
t.change :duedate, :datetime
end
This way when you access duedate it will have been already parsed as a datetime object, instead of you having to convert it everytime.
You can also use strptime. It is working for me :)
DateTime.strptime(task.duedate ,"%B %e, %Y")
I faced this issue as well and I was able to solve it after creating a method in controller.rb file which converted date from string format to datetime object I then called this method in create function before saving the data into database.
def convert_to_date(date_as_string)
#expecting date format in "yyyy-mm-dd" format
if date_as_string.length > 0
split_date = date_as_string.split('-')
return Date.new(year=split_date[0].to_i, month=split_date[1].to_i,
day=split_date[2].to_i)
else
return nil
end
end