Selecting line items

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
%>

<%= check_box("check_due", "print_check") %> <%=h (check_due.supplier.suppname) %> <%=h (check_due.suppreference) %> <%= 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 %> <%= check_due.ovamount.to_fl(2) %> <% 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: HqDnPuefppjsMYQhZwAq0akBrQTfnvIKrHciv81aKe0=
action: 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 W. [email protected] 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

Fred

On Mon, 2009-09-14 at 01:28 -0700, Frederick C. wrote:

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

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
Parametrised to the max - Space Vatican


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.