Obsługa parametrów w kontrolerze

Hej

Mam taki kod:

[code]<%= form_tag("/tickets/bought", :method => “get”, :remote => true) do %>

<% @tickets.each do |ticket| %> <% if ticket.bus_id != nil %> <% end %> <% if ticket.user_reserved_id != 0 %> <% else %> <% end %>
</tr>

<% end %>

City From City To Date of trip End of trip Seat Number User name
<%= ticket.city_from %> <%= ticket.city_to %> <%= ticket.date_of_trip.strftime("%A %d-%m-%Y %H:%M") %> <%= ticket.end_of_trip.strftime("%A %d-%m-%Y %H:%M") %><%= ticket.name_of_seat %><%= link_to User.find(ticket.user_reserved_id).name,User.find(ticket.user_reserved_id) %>Not reserved<%= check_box_tag ticket.id,'true'%>

<%= submit_tag("Bought",) %> <% end %>[/code] i on produkuje takie paramsy : {"utf8"=>"✓", "1151"=>"true", "1152"=>"true", "commit"=>"Bought", "action"=>"bought", "controller"=>"tickets"} gdzie liczby 1151 i 1152 to IDki moich ticketow a wartość true oznacza że ticket został kupiony. Teraz moze ich byc do dziesieciu w paramsach. W jaki sposob się mogę do nich odwołać w kontrolerze nieznając ich numerów? Czy inaczej może powinienem skonstruowac check_box aby powiązać go z modelem ticketów w taki sposób aby móc w railsach potem operować na konkretnych obiektach.

Mógłbyś chociaż przez reject dla pozostałych kluczy w Hashu params.reject{|key| %w(utf8 commit action controller).include? w}
Ale nie bardzo też wiem, co w ogóle dzieje się w tym kodzie i na 95% coś robisz źle. Mógłbyś wkleić kontroler i model do tego?

Zrób w checkboksie

      <td><%= check_box_tag "tickets[#{ticket.id}]",'true'%></td>

Powinieneś dostać w paramsach coś a’la
{“utf8”=>“✓”, “tickets” => {“1151”=>“true”, “1152”=>“true”}, “commit”=>“Bought”, “action”=>“bought”, “controller”=>“tickets”}

a stąd już sobie prosto zrobisz hasha wartości przez params[:tickets] i ewentualnie jakiegoś each{|key,value|}

[quote=konole]params.reject{|key| %w(utf8 commit action controller).include? w}
[/quote]

params.except(*%w[utf8 commit action controller])

Dzięki za odpowiedzi:) Chodziło mi właśnie o to co napisał kham:)