It is difficult to see how that line could not set
params[:task][:enddate] to nil, assuming it did not generate an error
such as it would if params[:task] were nil. Are you sure it is
executing that line of code? You could break in at that point using
ruby-debug and check. See the rails guide on debugging for how to do
it (google rails guides).
1. Yes, the code definitely GETS executed
2. No, params[:task] is definitely NOT nil
2. Other values of the Task object in params CAN be set to nil, for
example...
params[:task][:name] = nil
...works correctly.
Could it be that "...[:enddate]" is not sufficient in...
params[:task][:enddate]
...because the date gets submitted by a date_select? When I check what
values get passed to params, I see...
Well yes, quite likely. So when you said that params[:task][:enddate]
was not getting set to nil, did you actually mean that the date in the
database when you save it is not cleared? It looks like it might be
an idea to clear the three values in params that are used for setting
the date. If you are not sure of the format then use ruby-debug to
break in, then you can inspect params and see exactly what is there so
you can clear it.
Could it be that the problem stems from the "(1i), (2i), (3i)" part?
Any ideas?
Unless i've misunderstood what you are attempting, you need to clear
out the 3 parts of end date. You can't remove params[:task][:enddate]
because it doesn't exist - when activerecord sees parameters with the
appropriate naming convention it gathers them together to create an
instance of Time and assigns that to the task's enddate. If you want
to set enddate to nil it would probably be enough to remove those 3
parts and then set params[:task][:enddate] to nil (although why jump
through all those hoops and not just do some_task.enddate = nil ?)