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.