在轨传递的参数数组通过get(Passing array of parameters through

2019-06-26 00:42发布

我如何通过Get方法在轨传递的参数数组? 目前我的网址loocs是这样的:

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方法发送。 有没有什么解决办法送不阿贾克斯发布采购信息。

Answer 1:

不,GET只能把变量的URL本身。 如果你想要的网址更短,你要POST。 这是HTTP,而不是轨道的限制功能。



Answer 2:

你应该坚持使用GET请求,如果你不改变任何事物的状态,所有要访问一个只读值。

要发送一个ID阵列轨道在一个GET请求简单地命名用方括号在最后的变量。

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


Answer 3:

我最近想做到这一点,并找到了一个解决方法就是有点不太复杂,因此具有一定的复杂性的限制,但也可能是更容易实现。 无法保障等说话

如果你有一个分隔符,例如,通过您的数组值作为字符串

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

等等



Answer 4:

@Homan答案是适用于使用外部客户端(例如curl或角度)。 在Rails内部测试用例但是,你不应该使用[] 下面是一个例子:

get get_test_cases_url(**path_params), params: {case_ids: ["NON-9450", "NON-12345", "NON-9361"]}

这是使用新的格式,其中get_test_cases是路线的名字,你传递给所有PARAMS需要构造URL路径的方法。 查询参数是一个单独的哈希值。

仅供参考,如果我使用[]case_ids[]然后代替["NON-9450", "NON-12345", "NON-9361"]我得到它解析为[["NON-9450"], ["NON-12345"], ["NON-9361"]]



文章来源: Passing array of parameters through get in rails