Passing an array into controller

I am trying to pass and array from an AJAX Javascript function to a controller. The parameter is being read as a single string and not an array.

The Javascript function: function sendtolist(formName){ var form = $(formName) var checked = checked = form.getInputs("checkbox","plans").findAll(function(item) { return item.checked; }).pluck("value"); action="/generate_reports/advanced_plan_summary" window.location.href=action+"?plans="+checked }

The controller is:

def advanced_plan_summary     @ids = params[:plans]     @ids = @ids.split(',')     @plans = Plan.find(@ids.to_a)     if @plans[0].nil?       flash[:warning] = "Advanced Plan Selection Empty!!!"       redirect_to(:action => :index)     end     @planname =     for plan in @plans       @planname << " " + plan.plan_name     end     flash[:notice] = "Plans picked = #{@planname}" #... end

I select plans with the id 58 and 32. It only seems to find the item 58???

Here is what my development log looks like:

Processing GenerateReportsController#process_state (for 127.0.0.1 at 2008-09-15 17:23:55) [POST]   Session ID: e78dc6d1d0552aa6551bd18996c5c48e   Parameters: {"action"=>"process_state", "controller"=>"generate_reports"}   User Load (0.002074) SELECT * FROM users WHERE (id = 25) LIMIT 1 Completed in 0.00387 (258 reqs/sec) | Rendering: 0.00006 (1%) | DB: 0.00606 (156%) | 200 OK [http://127.0.0.1/generate_reports/ process_state]   User Columns (0.003930) SHOW FIELDS FROM users

Processing GenerateReportsController#advanced_plan_summary (for 127.0.0.1 at 2008-09-15 17:23:55) [GET]   Session ID: e78dc6d1d0552aa6551bd18996c5c48e   Parameters: {"plans"=>["58,32"], "action"=>"advanced_plan_summary", "controller"=>"generate_reports"}   User Load (0.002175) SELECT * FROM users WHERE (id = 25) LIMIT 1   Plan Columns (0.002646) SHOW FIELDS FROM plans   Plan Load (0.001551) SELECT * FROM plans WHERE (plans.`id` = 58) Rendering within layouts/application Rendering generate_reports/advanced_plan_summary Completed in 0.04176 (23 reqs/sec) | Rendering: 0.02336 (55%) | DB: 0.01030 (24%) | 200 OK [http://127.0.0.1/generate_reports/ advanced_plan_summary?plans=58,32]

Has anyone had experience with passing an array of objects and how this is supposed to work. Thanks William

You need to make a query string that looks like plans=53&plans=52&plans[43] (to send the array [53, 52, 43])

Fred

Thanks that worked for me. I would love to change this so I'm using a link_to object ruby object to call this function and pass the results to my controller rather than calling it from the Javascript object?

Here is how I ended up doing it

window.location.href=action+"?"+array_params(checked);

function array_params(arry) { //Prototype magic... concatenating array onto variable string... var paramvar = ""; arry.each(function(s){     paramvar = paramvar.concat("plans=",s,"&");}); paramvar = paramvar.replace(/&$/,""); return paramvar; }

It returned - plans=53&plans=52&plans=42

Thanks again. Will