Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 具有不同参数结构的多个操作_Ruby On Rails 4_Postman_Rails Api - Fatal编程技术网

Ruby on rails 4 具有不同参数结构的多个操作

Ruby on rails 4 具有不同参数结构的多个操作,ruby-on-rails-4,postman,rails-api,Ruby On Rails 4,Postman,Rails Api,我有一个测试api应用程序,我使用它在控制器中执行不同的操作。但我无法正确地实施它 此控制器没有模型。它只是将控制权委托给一些服务。我无法将post数据发送到操作 class SimplexController < ApplicationController def initiate_request response = SimplexServices.new.initiate_request simplex_params render json:

我有一个测试api应用程序,我使用它在控制器中执行不同的操作。但我无法正确地实施它

此控制器没有模型。它只是将控制权委托给一些服务。我无法将post数据发送到操作

class SimplexController < ApplicationController
    def initiate_request
        response = SimplexServices.new.initiate_request simplex_params
        render json: response
    end


    def update_kyc
        response = SimplexServices.new.initiate_kyc update_kyc_params
        render json: response
    end

    private 
    def simplex_params
        params.permit!
    end

    def update_kyc_params
        params.permit!
    end
end
以下是更新请求

{
  "documents": [
    {
      "document_type_id": "1",
      "document_number": "doc123"
    },
    {
      "document_type_id": "2",
      "document_number": "doc456"
    }
  ]
}
我将如何在控制器中允许此操作

现在我允许使用下面的代码进行所有操作。但允许一切都是不好的

private 
def simplex_params
  params.permit!
end
我必须如何在控制器中实现这种情况

谢谢,
A第

首先,关于许可证的使用,这取决于要求。如果相关数据不敏感,则可以跳过“允许”,并在“批量更新”中更新所有参数。许可证主要用于在模型包含密码、角色等敏感数据时保护应用程序不被大规模分配

当json数据被传递到Rails api时,可以在参数上使用permit,只需选择键并根据需要进行哈希。从文档中:

   params = ActionController::Parameters.new({
   person: {
   name: "Francesco",
   age:  22,
   role: "admin"
     }
   })

permitted = params.require(:person).permit(:name, :age)
permitted            # => <ActionController::Parameters {"name"=>"Francesco", "age"=>22} permitted: true>

在您的情况下,通过JSON解析并删除不需要的键

我需要在操作中使用所有参数。担心的是,params结构必须只允许上述json结构。不允许使用额外的键和值。如果需要修复json结构,并且json的来源可以是任何第三方,则需要在controller中重新构造该结构,以获得对发送数据的完全控制
   params = ActionController::Parameters.new({
   person: {
   name: "Francesco",
   age:  22,
   role: "admin"
     }
   })

permitted = params.require(:person).permit(:name, :age)
permitted            # => <ActionController::Parameters {"name"=>"Francesco", "age"=>22} permitted: true>