Rails强参数如何允许空参数传入?
解决强参数允许表单空提交的问题
当表单空提交时,params.require(:my_model)会强制要求存在:my_model参数,一旦不存在就抛出「参数缺失或值为空:my_model」的错误。要在保留强参数过滤能力的前提下允许空提交,只需要把require替换为fetch并指定默认值为空哈希即可:
def my_model_params params.fetch(:my_model, {}).permit(:field) end
原理说明
params.fetch(:my_model, {}):如果:my_model参数存在,就使用它的值;如果不存在(空提交场景),就返回空哈希{}。- 后续的
.permit(:field)会对这个值进行过滤,即使是空哈希,permit也会返回空的允许参数集合,不会触发错误,同时依然保证只有指定的字段能被允许。
另外也可以用条件判断的方式实现,效果一致:
def my_model_params if params[:my_model].present? params[:my_model].permit(:field) else {} end end
内容的提问来源于stack exchange,提问作者fguillen
相关产品推荐
相关产品推荐

