check_box not passing 0 when unchecked?

Code:
<%= check_box("schedule_report", "active_#{id}",
options={:id=>"schedule_report_#{id}_active", :checked
=>schedule_report.active }, 1, 0) %>

Rendered output:
<input type="hidden" value="0" name="schedule_report[active_20]">
<input id="schedule_report_20_active" type="checkbox" value="1"
name="schedule_report[active_20]" checked="checked">

<input type="hidden" value="0" name="schedule_report[active_17]">
<input id="schedule_report_17_active" type="checkbox" value="1"
name="schedule_report[active_17]">
.......

Problem:
The value of "1" is always passed, even if the box is UNCHECKED.
Please help!

Thanks!

Go read a basic html tutorial, concentrating on the syntax of an <input>
tag.

Passed to your browser as evidenced by the above renderings (which
would be correct), or as in, the form always returns a 1? Big
difference. In the latter case, we'd need to know what browser (and
possibly OS), unless you mean all. Could be just a browser bug.

-Dave

Dave Aronson wrote in post #1021425:

Howzabout, rather than just getting all snarky, you point out to Joan
and me, what's going wrong? MINSWAN, remember?

-Dave

So what does the code calling this look like (i.e. what collection are
you iterating over) ? What do the received params look like ?

Fred

+1

I've been wracking my brains to see what's wrong with the HTML
(especially since it's been generated with the check_box() helper).
Maybe I'm missing something obvious... ?

I don't think you're missing anything -- I've tested Joan's code in Safari and it works as expected (you find '0' in the params when you uncheck a box).

I do seem to remember some weirdness with Rails' checkboxes/hidden fields pairs and Firefox, to do with the way it restores form state when you go back to (or even reload) a form. However, I couldn't replicate the problem in Firefox 6.0.1, so maybe it's an old bug or maybe I'm misremembering things.

Joan, are you testing in Firefox by any chance?

Chris

Thank you all for the help.

Yes, the test was done in firefox 6.0.2 and the params were passed
through an ajax link by checking checkbox value (jquery). Can't paste
the code here coz I can't access the source now.

Ah, ajax may be the key. How are you serialising the form inputs? If
you're always submitting the checkbox's value then it will indeed only
ever submit '1'. You'd need to select the appropriate value based on
whether the checkbox was checked.

Fred

Frederick Cheung wrote in post #1021765:

Ah, ajax may be the key. How are you serialising the form inputs? If
you're always submitting the checkbox's value then it will indeed only
ever submit '1'. You'd need to select the appropriate value based on
whether the checkbox was checked.

Fred

Hi Fred,

Yes, you are right, the ajax code passing checkbox's value is the root
cause.

Problem fixed and thanks for help.

Joan