Ruby on rails 如何在Rails 5.2中允许哈希数组
我试图通过发布以下信息来创建多个“缺勤”:Ruby on rails 如何在Rails 5.2中允许哈希数组,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图通过发布以下信息来创建多个“缺勤”: Parameters: {"absences"=>[{"user_id"=>1, "lesson_id"=>25, "excused"=>true}, {"user_id"=>2, "lesson_id"=>25, "excused"=>true}]} 但是,我无法在控制器中白名单这种格式。我试图按照“”中的解决方案进行操作 就我而言: def absence_params params.permit(a
Parameters: {"absences"=>[{"user_id"=>1, "lesson_id"=>25,
"excused"=>true}, {"user_id"=>2, "lesson_id"=>25, "excused"=>true}]}
但是,我无法在控制器中白名单这种格式。我试图按照“”中的解决方案进行操作
就我而言:
def absence_params
params.permit(absences: [:user_id, :lesson_id, :excused])
end
我明白了
ActiveModel::UnknownAttributeError (unknown attribute 'absences' for Absence.):
然后我试着:
Parameters: {"absence"=>[{"user_id"=>1, "lesson_id"=>25,
"excused"=>true}, {"user_id"=>2, "lesson_id"=>25, "excused"=>true}]}
def absence_params
params.permit(:absence, array: [:user_id, :lesson_id, :excused])
end
得到:
Unpermitted parameters: :absence, :format
----已解决----
您的参数许可证代码正确:
需要“绑定器/内联”
gemfile(ENV['INSTALL']=='1')执行
来源“https://rubygems.org"
gem“actionpack”、“6.0.2.2”
gem“activesupport”、“6.0.2.2”
结束
需要“主动支持/核心扩展”
需要“动作\控制器/金属/强\参数”
需要“微型测试/自动运行”
类BugTest[
{“用户id”=>1,“未经许可的参数”=>123,“课程id”=>25,“免责”=>true},
{“用户id”=>2,“课程id”=>25,“免除”=>true}
]
})
主张平等(
{
“缺席”=>[
{“用户id”=>1,“课程id”=>25,“免责”=>true},
{“用户id”=>2,“课程id”=>25,“免除”=>true}
]
},
参数允许(缺席:[:用户id,:课程id,:免除])到
)
结束
结束
该错误来自其他地方,很可能您正在尝试执行类似于缺勤.创建(缺勤参数)
的操作,该操作仅适用于单个记录
要立即创建数组,您应相应地调整其他相关代码,例如:
@absenses = params["absences"].map do |raw_absense_params|
Absense.create!(raw_absense_params.permit(:user_id, :lesson_id, :excused))
end
接受父模型的\u嵌套\u属性\u:缺席
(如果有)(可能是课程
)。这方面的代码将更加简洁,因为Rails将为您处理大多数事情,例如由于验证等原因无法保存所有实例的情况您的参数许可证代码正确:
需要“绑定器/内联”
gemfile(ENV['INSTALL']=='1')执行
来源“https://rubygems.org"
gem“actionpack”、“6.0.2.2”
gem“activesupport”、“6.0.2.2”
结束
需要“主动支持/核心扩展”
需要“动作\控制器/金属/强\参数”
需要“微型测试/自动运行”
类BugTest[
{“用户id”=>1,“未经许可的参数”=>123,“课程id”=>25,“免责”=>true},
{“用户id”=>2,“课程id”=>25,“免除”=>true}
]
})
主张平等(
{
“缺席”=>[
{“用户id”=>1,“课程id”=>25,“免责”=>true},
{“用户id”=>2,“课程id”=>25,“免除”=>true}
]
},
参数允许(缺席:[:用户id,:课程id,:免除])到
)
结束
结束
该错误来自其他地方,很可能您正在尝试执行类似于缺勤.创建(缺勤参数)
的操作,该操作仅适用于单个记录
要立即创建数组,您应相应地调整其他相关代码,例如:
@absenses = params["absences"].map do |raw_absense_params|
Absense.create!(raw_absense_params.permit(:user_id, :lesson_id, :excused))
end
接受父模型的\u嵌套\u属性\u:缺席
(如果有)(可能是课程
)。这方面的代码将更加简洁,因为Rails将为您处理大多数事情,例如由于验证等原因无法保存所有实例的情况谢谢你的回答!不幸的是,我得到了“Unpermitted parameter::format.”和“ActiveModel::UnknownAttributeError(缺勤的未知属性'Abscences')。”即使我没有尝试使用
Abscence\u params
:::结果是gem'cancancan'不接受数组。。。谢谢谢谢你的回答!不幸的是,我得到了“Unpermitted parameter::format.”和“ActiveModel::UnknownAttributeError(缺勤的未知属性'Abscences')。”即使我没有尝试使用Abscence\u params
:::结果是gem'cancancan'不接受数组。。。谢谢