我目前在我的销售控制器中有一个创建操作,如下所示:
def create
@sale = Sale.new(params[:sale].except(:vehicles_attributes))
if @sale.save
redirect_to @sale, :notice => "Successfully created sale."
else
render :action => 'new'
end
end
目的是排除一些仅用于填充链接选择且不应提交的属性(它们没有列)。
使用上面的控制器代码,我发现参数仍然包含"sale"=>{"vehicles_attributes"=>{"0"=>{"make"=>"","model"=>""}}}
,所以我似乎错过了控制器代码中的某些内容。
编辑:经过更多的挖掘,我发现在我的异常代码有机会删除不应该由表单发送的参数之前,mass_assignment 异常正在触发,所以我回到了第一个问题。
如何确保在收到 mass_assignment 错误之前删除不应由表单发送的字段?