Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 5.2中允许哈希数组_Ruby On Rails_Ruby - Fatal编程技术网

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

----已解决----

  • 宝石“cancancan”不允许我使用数组进行创建
  • 如果在强参数中允许数组存在问题,请尝试


  • 您的参数许可证代码正确:

    需要“绑定器/内联”
    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
    
  • Employ
    接受父模型的\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
    
  • Employ
    接受父模型的\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'不接受数组。。。谢谢