# Setting my paid\_until\_date

**URL:** <https://www.ruby-forum.com/t/setting-my-paid-until-date/125820>\
**Category:** Rails\
**Created:** [January 12, 2008, 1:13pm UTC](https://www.ruby-forum.com/t/setting-my-paid-until-date/125820 "2008-01-12T13:13:55Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![bingobob](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e480ec/32.png) [@bingobob](https://www.ruby-forum.com/u/bingobob)\
**Post date:** [January 12, 2008, 1:13pm UTC](https://www.ruby-forum.com/t/setting-my-paid-until-date/125820/1 "2008-01-12T13:13:55Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![bingobob](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e480ec/32.png) [@bingobob](https://www.ruby-forum.com/u/bingobob)\
**Post date:** [January 12, 2008, 2:14pm UTC](https://www.ruby-forum.com/t/setting-my-paid-until-date/125820/2 "2008-01-12T14:14:36Z")

</div>

any ideas?

---

<div class="post-metadata">

**Author:** ![bingobob](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e480ec/32.png) [@bingobob](https://www.ruby-forum.com/u/bingobob)\
**Post date:** [January 12, 2008, 3:34pm UTC](https://www.ruby-forum.com/t/setting-my-paid-until-date/125820/3 "2008-01-12T15:34:33Z")

</div>

On 1/12/08, bingo bob [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> 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])

> EXTRACT OF UPDATE LINE IN LOG…
> 
> >

–  
Rick DeNatale

My blog on Ruby  
[http://talklikeaduck.denhaven2.com/](http://talklikeaduck.denhaven2.com/)

---

<div class="post-metadata">

**Author:** ![bingobob](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e480ec/32.png) [@bingobob](https://www.ruby-forum.com/u/bingobob)\
**Post date:** [January 12, 2008, 5:05pm UTC](https://www.ruby-forum.com/t/setting-my-paid-until-date/125820/4 "2008-01-12T17:05:08Z")

</div>

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])

On Jan 12, 8:58 am, bingo bob [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![bingobob](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e480ec/32.png) [@bingobob](https://www.ruby-forum.com/u/bingobob)\
**Post date:** [January 12, 2008, 3:58pm UTC](https://www.ruby-forum.com/t/setting-my-paid-until-date/125820/5 "2008-01-12T15:58:24Z")

</div>

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”}

---

<div class="post-metadata">

**Author:** ![bingobob](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/e480ec/32.png) [@bingobob](https://www.ruby-forum.com/u/bingobob)\
**Post date:** [January 12, 2008, 5:13pm UTC](https://www.ruby-forum.com/t/setting-my-paid-until-date/125820/6 "2008-01-12T17:13:19Z")

</div>

On Jan 12, 2008, at 6:13 AM, bingo bob wrote:

> 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])

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])
