如何通过GET将一组参数值传递给控制器​​动作

时间:2016-07-11 02:43:01

标签: ruby-on-rails

在Rails应用程序中,我有一个接受查询参数的API控制器

module Api
  class UserController < ApplicationController
    def index
      @users = User.where(query_params)
    end
    def query_params    
      params.permit( :id, :name)
    end
  end
end

我希望能够通过get请求将多个ID传递给此控制器操作。

api_users_path(id: User.my_scoped_selection.map(&:id) )

这会生成一个带有方括号

指示的ID数组的URL
http://my.app/api/users?id[]=1

我也尝试在地址栏中手动输入

http://my.app/api/users?id=1,2,3
http://my.app/api/users?id=1&id=2&id=3
http://my.app/api/users?id[0]=1&id[1]=2&id[2]=3

其中没有一个正确过滤用户,我将返回所有用户。

如何格式化URL以正确传递参数值数组?或者,我应该如何构造控制器来处理多个参数值?

1 个答案:

答案 0 :(得分:1)

对于允许一组id的强参数,您可以尝试

$sql =  "UPDATE Device      SET deviceID = '631403956MB21' WHERE
deviceID = '4631403956MB2';   ";
$sql .= "UPDATE EventData   SET deviceID = '631403956MB21' WHERE
deviceID = '4631403956MB2';   ";
...

用于发送ID数组的URL

def query_params
  params.permit(id: [], :name)
end