Formatting date field in form

undefined method `strftime' for nil:NilClass

I am new to RoR and trying to update an existing app developed by someone else. I have the following form in a partial file to display for the new and edit actions. I added :value to the program_date field to display only the date of the timestamp field, removing the time portion of the field value. It works as needed for edit…

= form.inputs do = form.input :program, :as => :select, :collection => @programs = form.input :headline, :as => :string = form.input :message, :as => :text = form.input :program_date, :as => :string, :input_html => { :class => ‘date-pick’, :value => @program_special.program_date.strftime(“%m/%d/%Y”)}

But when creating a new record, I get an error when trying the same form for a creating a new record, I guess because the field has no value when new… How can I apply to only the edit form? Or am I trying to accomplish this in the correct way?

Thanks, Robert

Robert Fitzpatrick wrote:

I am new to RoR and trying to update an existing app developed by someone else. I have the following form in a partial file to display for the new and edit actions. I added :value to the program_date field to display only the date of the timestamp field, removing the time portion of the field value. It works as needed for edit...

= form.inputs do = form.input :program, :as => :select, :collection => @programs = form.input :headline, :as => :string = form.input :message, :as => :text = form.input :program_date, :as => :string, :input_html => { :class => 'date-pick', :value => @program_special.program_date.strftime("%m/%d/%Y")}

But when creating a new record, I get an error when trying the same form for a creating a new record, I guess because the field has no value when new...

>undefined method `strftime' for nil:NilClass|

To clarify, this form is in a partial named _form.html.haml that is used in the new.html.haml and edit.html.haml files. The new file contains the following while the edit is the same with the addition of a delete button...

= semantic_form_for(@program_special, :url => admin_program_specials_path, :html => {:method => :post, :multipart => true, :class => 'well'}) do |f|    = render :partial => 'form', :locals => {:form => f}    = f.actions do      = f.submit 'Save Program Special', :class => 'btn-primary'      = link_to 'Cancel', admin_program_specials_path, :class => 'btn'

I am new to RoR and trying to update an existing app developed by someone else. I have the following form in a partial file to display for the new and edit actions. I added :value to the program_date field to display only the date of the timestamp field, removing the time portion of the field value. It works as needed for edit...

= form.inputs do   = form.input :program, :as => :select, :collection => @programs   = form.input :headline, :as => :string   = form.input :message, :as => :text   = form.input :program_date, :as => :string, :input_html => { :class => 'date-pick', :value => @program_special.program_date.strftime("%m/%d/%Y")}

But when creating a new record, I get an error when trying the same form for a creating a new record, I guess because the field has no value when new...

undefined method `strftime' for nil:NilClass

How can I apply to only the edit form? Or am I trying to accomplish this in the correct way?

You don't need to take different action dependent on whether you are editting or creating, but, as you have correctly identified, whether the date has a value or not. You could set the value to a default value in the new action, possibly something like

@program_special.program_date = Time.now

or you can prevent it trying to display an empty date with something like

= form.input :program_date, :as => :string, :input_html => { :class =>

'date-pick', :value => (@program_special.program_date.strftime("%m/%d/%Y") if @program_special.program_date)}

Colin