setting my paid_until_date

Why doesnt this work..it's not setting my paid_until_date.

VIEW CODE

Paid until <%= date_select 'property', 'paid_until_date', :order => [:day, :month, :year] %>

CONTROLLER ACTION

  def record_payment     @property = Property.find(params[:id])     Property.find(params[:id]).payments.create(params[:payment])     @property.update_attribute(:paid_until_date, params[:paid_until_date])

    # puts @property.property_name     # redirect_to :action => 'list_all_properties' <-- WORKS !     redirect_to :action => 'manage_payments', :id => @property   end

PARAMS PASSED FROM LOG

  Parameters: {"commit"=>"Record Payment", "property"=>{"paid_until_date(1i)"=>"2008", "paid_until_date(2i)"=>"1", "paid_until_date(3i)"=>"12"}, "action"=>"record_payment", "id"=>"1", "payment"=>{"paid_on(1i)"=>"2008", "paid_on(2i)"=>"1", "amount"=>"22222", "note"=>"", "paid_on(3i)"=>"12"}, "controller"=>"admin"}

EXTRACT OF UPDATE LINE IN LOG...

  Property Update (0.000624) UPDATE properties SET `property_name` = 'Rupes Place', `paid_until_date` = NULL <---- why NULL ?

driving me a bit mad, any kind person help me out ? I think i am close ?

bb

any ideas?

Why doesnt this work..it's not setting my paid_until_date.

VIEW CODE

Paid until <%= date_select 'property', 'paid_until_date', :order => [:day, :month, :year] %>

CONTROLLER ACTION

  def record_payment     @property = Property.find(params[:id])     Property.find(params[:id]).payments.create(params[:payment])     @property.update_attribute(:paid_until_date, params[:paid_until_date])

Have a close look at those parameters you listed below. I think this last line should be @property.update_attribute(:paid_until_date, params[:property][:paid_until_date])

thanks but still no dice...with the new line?

here are the passed params...

  Parameters: {"commit"=>"Record Payment", "property"=>{"paid_until_date(1i)"=>"2011", "paid_until_date(2i)"=>"1", "paid_until_date(3i)"=>"12"}, "action"=>"record_payment", "id"=>"1", "payment"=>{"paid_on(1i)"=>"2008", "paid_on(2i)"=>"1", "amount"=>"444", "note"=>"", "paid_on(3i)"=>"12"}, "controller"=>"admin"}

The passed params should be the same, as only the controller code was modified. If you notice:

Parameters : { ... "property"=>{"paid_until_date(...)"=>"...", ... } }

Because you're using date_select, it splits the value into 3 and reassembles it later into params[:property][:paid_until_date]

If you'd like to see what your controller is using, try adding a "puts params.inspect" or "puts params[:property].inspect".

You can also try to update with:

@property.update_attributes(params[:property])

This won't solve your problem, but why are you doing the find twice? Why not make the create line be @property.payments.create(params[:payment])