check_box and that automatic hidden_field messes up my form

I'm having a form where the user can select the line items that he wants to create. All line items are new and don't have an id. I realized that check_box created a hidden field that's supposed to help me, but it doesn't work when I receive the params[:line_items]. I get a double number of line items. I can fix it in the controller, but it's just ugly. Advices?

<%fields_for 'line_items', li do |l|%>   <%=l.check_box :selected_for_save%> <%=l.hidden_field :container_id%>   <%=l.hidden_field :amount%> <%end%>

line_items: - !map:HashWithIndifferentAccess   selected_for_save: "1" - !map:HashWithIndifferentAccess   container_id: "1901"   selected_for_save: "0"   amount: "490.0" - !map:HashWithIndifferentAccess   selected_for_save: "1" - !map:HashWithIndifferentAccess   container_id: "1912"   selected_for_save: "0"   amount: "465.0" - !map:HashWithIndifferentAccess   selected_for_save: "1" - !map:HashWithIndifferentAccess   container_id: "1913"   selected_for_save: "0"   amount: "465.0"

I'm having a form where the user can select the line items that he
wants to create. All line items are new and don't have an id. I realized that check_box created a hidden field that's supposed to
help me, but it doesn't work when I receive the params[:line_items]. I
get a double number of line items. I can fix it in the controller, but it's just ugly. Advices?

Use check_box_tag instead of check_box ?

Fred

Frederick Cheung wrote:

Frederick Cheung wrote:

> Use check_box_tag instead of check_box ?

> Fred

This is what I'm using:

<%=check_box_tag 'line_items[selected_for_save]' %> instead of <%=l.check_box :selected_for_save%>

I find it ugly. I don't want to mix formhelpers with formtaghelpers.

It's kludgy but right now it's the only way if line_items is to be an array parameter. The way that the form parameter parser detects that a new array element is starting is when it spots a repeated parameter name. If you make line_items a hash parameter you won't have this problem, ie generate inputs

line_items[1][selected_for_save] line_items[2][selected_for_save]

(sequential ids 1,2 etc... will do fine, but if you have some more natural key than you can use that too.)

Fred