Forum: Ruby on Rails Updates using urls and query strings

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
C4cd024191ff30fb901592e63d9ef820?d=identicon&s=25 DAZ (Guest)
on 2008-12-13 18:23
(Received via mailing list)
I have a task model and in the controller there is this code that sets
the date a task was completed on if params[:completed] comes back as
true and sets the completed_by field to nil (ie incomplete) if params
[:completed] comes back as false:

@task.completed_on = params[:completed] ?  Time.now.to_s(:db) : nil

Users can edit the task and this code is in the edit view - allowing
the user to tick the box to mark a task as complete or untick it to
change the task's status back to incomplete:
<%= check_box_tag :completed, "1", @task.completed_on  %>

This all works fine. However, if I try to use AJAX to access the
update controller directly with the following urls:

/tasks/3?completed=true, _method = PUT
/tasks/3?completed=false, _method = PUT

The first one works, but the second doesn't reset the completed_by
field back to nil.

Does anybody know why this isn't working? I've a feeling it might be
because ruby is seeing 'false' as a string and therefore 'true'.

cheers,

DAZ
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-12-13 18:29
(Received via mailing list)
>
> Does anybody know why this isn't working? I've a feeling it might be
> because ruby is seeing 'false' as a string and therefore 'true'.
>
Precisely. all parameters are just strings, it's up to you to coerce
it to a boolean value
C4cd024191ff30fb901592e63d9ef820?d=identicon&s=25 DAZ (Guest)
on 2008-12-13 20:35
(Received via mailing list)
Thanks for the reply Frederick, I just have two questions:

1) How exactly do I coerce it into a boolean value - is there a best-
practice way of doing this?

2) How come this problem doesn't occur when the value is submitted via
the form from the edit action?

cheers,

DAZ

On Dec 13, 5:28 pm, Frederick Cheung <frederick.che...@gmail.com>
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-12-14 00:13
(Received via mailing list)
On Dec 13, 7:32 pm, DAZ <daz4...@gmail.com> wrote:
> Thanks for the reply Frederick, I just have two questions:
>
> 1) How exactly do I coerce it into a boolean value - is there a best-
> practice way of doing this?
>
doesn't need to be any more complicated than if params[:foo] ==
'true' ...
> 2) How come this problem doesn't occur when the value is submitted via
> the form from the edit action?
>
if you were just using update_attributes then it understands this sort
of stuff IIRC.

Fred
C4cd024191ff30fb901592e63d9ef820?d=identicon&s=25 DAZ (Guest)
on 2008-12-14 19:11
(Received via mailing list)
Cheers Fred, that worked great!

DAZ

On Dec 13, 11:12 pm, Frederick Cheung <frederick.che...@gmail.com>
This topic is locked and can not be replied to.