Ruby 每个_值提升命名错误
我有一些模型,其中我有以下代码:Ruby 每个_值提升命名错误,ruby,Ruby,我有一些模型,其中我有以下代码: appraisal_detail.each_value { |detail| # some code... } 它通过消息“undefined method'each_value'”引发NoMethodError。我做错什么了吗?欢迎提出任何建议 以下是引发错误的方法的全部内容: def self.update_appraisal_details(appraisal, appraisal_detail) status = true apprais
appraisal_detail.each_value { |detail|
# some code...
}
它通过消息“undefined method'each_value'”引发NoMethodError。我做错什么了吗?欢迎提出任何建议
以下是引发错误的方法的全部内容:
def self.update_appraisal_details(appraisal, appraisal_detail)
status = true
appraisal_detail_ids = appraisal.employee_appraisal_detail_ids
appraisal_detail.each_value { |detail|
appraisal_detail = find_by_employee_appraisal_id_and_kra_list_id(appraisal.id, detail[:kra_list_id])
if appraisal_detail.nil? # For newly added KRA
new_detail = EmployeeAppraisalDetail.new(detail.merge({:employee_appraisal_id => appraisal.id}))
status = (new_detail.save && status)
elsif appraisal_detail.status == "Inactive"
status = (appraisal_detail.update_attributes(:status => "Active") && status)
appraisal_detail_ids.delete(appraisal_detail.id)
else
appraisal_detail_ids.delete(appraisal_detail.id)
end
}
end
您应该将
Hash
对象作为evaluation\u detail
传递
>> {1=>2}.each_value {|x| p x}
2
看起来您正在传递非散列对象
>> [].each_value { |x| p x }
NoMethodError: undefined method `each_value' for []:Array
from (irb):1
from /usr/bin/irb:12:in `<main>'
>[]每个_值{| x | px}
NoMethodError:[]的未定义方法“每个值”:数组
来自(irb):1
from/usr/bin/irb:12:in`'
传递给更新\u评估\u详细信息的值是多少
?给出完整的错误堆栈。。