Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing array of parameters through get in rails

How do I pass array of parameters through Get method in rails? Currently my URL loocs like this:

http://localhost:3000/jobs/1017/editing_job_suites/1017/editing_member_jobs/new?ids[]=1025&ids[]=1027 

How can I pass the array with Get method but avoid ?ids[]=1025&ids[]=1027 part.

Request is being sent with javascript window.open method. Is there any workaround to send not ajax Post request.

like image 869
Rafael Sedrakyan Avatar asked Jul 03 '12 14:07

Rafael Sedrakyan


2 Answers

You should stick to using a GET request if you are not changing the state of anything, and all you want to to access a read only value.

To send an array of ids to rails in a GET request simply name your variable with square brackets at the end.

//angular snippet  $http.(method:'GET',   ...   params: {'channel_id':2, 'product_ids[]': productIds}     //where productIds is an array of integers   ... ) 

Do not concatenate your ids as a comma separated list, just pass them individually redundantly. So in the url it would look something like this:

?channel_id=2&product_ids[]=6900&product_ids[]=6901 

url encoded it will actually be more like this:

?channel_id=2&product_ids%5B%5D=6900&product_ids%5B%5D=6901 

Rails will separate this back out for you.

Parameters: {"channel_id"=>"2", "product_ids"=>["6900", "6901"]} 
like image 180
Homan Avatar answered Sep 29 '22 18:09

Homan


No, GET can only put variables on the url itself. If you want the URL to be shorter, you have to POST. That's a limitation feature of HTTP, not Rails.

like image 31
DGM Avatar answered Sep 29 '22 19:09

DGM