Ruby on rails 将Rails中的嵌套参数列为白名单
我有一个具有以下结构的params散列(它是使用字段_构建的) 我正在尝试创建一个Ruby on rails 将Rails中的嵌套参数列为白名单,ruby-on-rails,strong-parameters,Ruby On Rails,Strong Parameters,我有一个具有以下结构的params散列(它是使用字段_构建的) 我正在尝试创建一个entries\u attributes\u params方法,该方法应该只返回params['daily\u log']['entries\u attributes']的白名单版本。不幸的是,当我调用该方法时,它总是返回为{} 以下作品 def entries_attributes_params` params[:daily_log][:entries_attributes].permit! end 但我
entries\u attributes\u params
方法,该方法应该只返回params['daily\u log']['entries\u attributes']
的白名单版本。不幸的是,当我调用该方法时,它总是返回为{}
以下作品
def entries_attributes_params`
params[:daily_log][:entries_attributes].permit!
end
但我想避免使用许可证代码>。因此,我尝试了以下方法:
def entries_attributes_params
params[:daily_log][:entries_attributes].permit(:count, :hours, :minutes)
end
这不管用。我把{}
拿回来
我尝试用[]
将传递到permit
的属性包装起来,但这不起作用
...permit([...attributes...])
我该怎么做?试试这个:
def entries_attributes_params
params_hash = params.require(:daily_log).permit(:id, entries_attributes: [:count, :hours, :minutes])
params_hash[:entries_attributes]
end
我明白了。关键是要认识到,params.permit…
实际上不会更改主参数散列。它会创建一个新对象。将此想法与下面的K M解决方案结合起来,给出了完整的答案:
def entries_attributes_params
p = params.require(:daily_log).permit(:id, entries_attributes: [:count, :hours, :minutes])
p[:entries_attributes]
end
我得到以下错误:ActionController::ParameterMissing(param丢失或值为空:entries\u attributes)感谢您尝试一下。你修改过的密码让我有了一部分。上面的代码将返回散列的错误部分,因此完整的答案更复杂一些。
def entries_attributes_params
p = params.require(:daily_log).permit(:id, entries_attributes: [:count, :hours, :minutes])
p[:entries_attributes]
end