I''m using check_box but I''m not married to it, probably because I don''t understand it. Basically, I am presenting a list of upcoming payments and I want to select which items are to be paid... <% form_for :supptrans, @supptrans, :url => { :action => "accept_checks" } do |form| %> <% odd_or_even = 0 for check_due in @supptrans odd_or_even = 1 - odd_or_even %> <tr valign="top" class="ListLine<%= odd_or_even %>"> <td><%= check_box("check_due", "print_check") %></td> <td><%=h (check_due.supplier.suppname) %></td> <td><%=h (check_due.suppreference) %></td> <td><%= check_due.duedate.to_s.split(''-'')[1].to_s + "-" + check_due.duedate.to_s.split(''-'')[2].to_s + "-" + check_due.duedate.to_s.split(''-'')[0].to_s %></td> <td align="right"><%= check_due.ovamount.to_fl(2) %></td> </tr> <% end %> <%= submit_tag ''Print Checks'' %><% end %> and when I checked 3 different boxes, I see in a <%= debug params %> only the first line item is returned... --- !map:HashWithIndifferentAccess check_due: !map:HashWithIndifferentAccess print_check: "0" commit: Print Checks authenticity_token: HqDnPuefppjsMYQhZwAq0akBrQTfnvIKrHciv81aKe0action: accept_checks controller: payables and it returns a value of ''0'' because it was unchecked. I was hoping that it would return each line item that was checked or all of the line items and I could loop through them and discard the unchecked items but I only get the first value, nothing else. How can I accomplish this? Craig -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
On Sep 14, 6:11 am, Craig White <craigwh...-BQ75lA0ptkhBDgjK7y7TUQ@public.gmane.org> wrote:> I''m using check_box but I''m not married to it, probably because I don''t > understand it. Basically, I am presenting a list of upcoming payments > and I want to select which items are to be paid... > > <% form_for :supptrans, @supptrans, > :url => { :action => "accept_checks" } do |form| %> > <% odd_or_even = 0 > for check_due in @supptrans > odd_or_even = 1 - odd_or_even > %>Take a look at the cycle helper as an alternative to this> and it returns a value of ''0'' because it was unchecked. > > I was hoping that it would return each line item that was checked or all > of the line items and I could loop through them and discard the > unchecked items but I only get the first value, nothing else. >You should use check_box_tag rather than check_box for this. Then it''s all about giving your check boxes the right names and the right values: rather than the value submitted being 1 you want the value submitted to be the id of the item in question. If you give the check boxes the same name and that name ends in [] then rails will collect the submitted values into an array for you I wrote a bit more about parameter names at http://www.spacevatican.org/2008/7/18/parametrised-to-the-max Fred> How can I accomplish this? > > Craig > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean.
On Mon, 2009-09-14 at 01:28 -0700, Frederick Cheung wrote:> > > On Sep 14, 6:11 am, Craig White <craigwh...-BQ75lA0ptkhBDgjK7y7TUQ@public.gmane.org> wrote: > > I''m using check_box but I''m not married to it, probably because I don''t > > understand it. Basically, I am presenting a list of upcoming payments > > and I want to select which items are to be paid... > > > > <% form_for :supptrans, @supptrans, > > :url => { :action => "accept_checks" } do |form| %> > > <% odd_or_even = 0 > > for check_due in @supptrans > > odd_or_even = 1 - odd_or_even > > %> > > Take a look at the cycle helper as an alternative to this---- I will but not for this application because there is so little of this. But thanks for mentioning it because I know I am using an antiquated method I found in one of the original AWDWR ----> > > > and it returns a value of ''0'' because it was unchecked. > > > > I was hoping that it would return each line item that was checked or all > > of the line items and I could loop through them and discard the > > unchecked items but I only get the first value, nothing else. > > > > You should use check_box_tag rather than check_box for this. Then it''s > all about giving your check boxes the right names and the right > values: rather than the value submitted being 1 you want the value > submitted to be the id of the item in question. If you give the check > boxes the same name and that name ends in [] then rails will collect > the submitted values into an array for you > > I wrote a bit more about parameter names at > http://www.spacevatican.org/2008/7/18/parametrised-to-the-max---- thanks, the key was the [] and I had to re-read your message a second time before the light bulb turned on. for completeness (if anyone wants what the solution was), the line became <td><%= check_box_tag "supptrans[]", check_due.id, false %></td> Thanks Fred, Craig -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.