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