通过在rails中传递参数数组

我如何通过轨道中的Get方法传递参数数组? 目前我的URL是这样的:

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

我怎样才能传递数组与Get方法,但避免?ids[]=1025&ids[]=1027部分。

请求正在使用javascript window.open方法发送。 有没有任何解决方法可以发送不是ajax Post请求。


不,GET只能将变量放在url本身上。 如果您希望URL更短,则必须POST。 这是HTTP的限制功能,而不是Rails。


如果您不更改任何状态,并且只想访问只读值,则应该坚持使用GET请求。

要在GET请求中向rails发送一个id数组,只需在最后用方括号命名变量即可。

//angular snippet

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

不要将您的ID作为逗号分隔的列表连接起来,只是单独传递它们。 所以在url中它看起来像这样:

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

url编码实际上更像这样:

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

Rails将会为你分离出来。

Parameters: {"channel_id"=>"2", "product_ids"=>["6900", "6901"]}

我最近想做到这一点,并找到了一个稍微不复杂的解决方法,因此有一些复杂性限制,但也可能更容易实施。 不能对安全等发言

如果你使用分隔符作为字符串传递数组值,例如

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

然后你可以把结果解析回你想要的结果:

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

然后做任何事情:

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

等等

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

上一篇: Passing array of parameters through get in rails

下一篇: Redirect with post data