Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/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 根对象或嵌套对象中的Rails强参数_Ruby On Rails_Strong Parameters - Fatal编程技术网

Ruby on rails 根对象或嵌套对象中的Rails强参数

Ruby on rails 根对象或嵌套对象中的Rails强参数,ruby-on-rails,strong-parameters,Ruby On Rails,Strong Parameters,我希望能够在根params对象中支持一组参数: ?foo=a params.permit(:foo) 或在嵌套对象中: ?bar[foo]=a params.require(:bar).permit(:foo) 我将参数从表单对象传递到该控制器,因此嵌套对象自然发生,但我也希望能够在查询字符串中传递根对象中的参数,并同时支持这两个参数 有没有一种优雅的、非黑客的方式来实现这一点?记住,只要允许,要求是不同的 require方法确保存在特定参数。不必在嵌套的参数上使用,它确保参数中包含所需的参

我希望能够在根params对象中支持一组参数:

?foo=a
params.permit(:foo)
或在嵌套对象中:

?bar[foo]=a
params.require(:bar).permit(:foo)
我将参数从表单对象传递到该控制器,因此嵌套对象自然发生,但我也希望能够在查询字符串中传递根对象中的参数,并同时支持这两个参数


有没有一种优雅的、非黑客的方式来实现这一点?

记住,只要允许,要求是不同的

require方法确保存在特定参数。不必在嵌套的参数上使用,它确保参数中包含所需的参数,否则将抛出错误

可以像这样使用嵌套属性

params = ActionController::Parameters.new({
  person: {
    name: "Francesco",
    age:  22,
    pets: [{
      name: "Purplish",
      category: "dogs"
    }]
  }
})

permitted = params.permit(person: [ :name, { pets: :name } ])
permitted.permitted?                    # => true
permitted[:person][:name]               # => "Francesco"
permitted[:person][:age]                # => nil
permitted[:person][:pets][0][:name]     # => "Purplish"
permitted[:person][:pets][0][:category] # => nil
您可以查看此

上的文档,require类似于[],但缺少值时会出现一个异常,就像Hashfetch一样。相反,您可以直接使用[]获取嵌套结构(如果有),否则返回根参数:

(params[:bar] || params).permit(:foo)