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.


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.


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"]}

I recently wanted to do this and found a workaround that is a little less complex, and so has some complexity limitations but may also be easier to implement. Can't speak to security, etc.

If you pass your array values as a string with a delimiter, eg

http://example.com/controller?job_ids=2342,2354,25245

Then you can take the result and parse it back to what you want:

job_ids = params[:job_ids].split(',')

Then do whatever:

    job_ids.each do |job_id|
      job = Job.find(job_id.to_i)
    end

etc

链接地址: http://www.djcxy.com/p/21938.html

上一篇: 如何将Android应用程序的JSONObject传递给PHP文件?

下一篇: 通过在rails中传递参数数组