在控制器中中止时,这是我从Ajax调用中获取的javascript对象的格式:
{
"j_identifier" = > "24942",
"charge" = > {
"0" = > {
"complainant" = > "",
"address" = > "",
"name" = > "",
"agency" = > "",
"codefendant" = > {
"0" = > {
"name" = > "sdfsdsd",
"address" = > "fsdf",
"phone" = > "sdf"
},
"1" = > {
"name" = > "sdfs",
"address" = > "sdfs",
"phone" = > "sdf"
}
}
},
"1" = > {
"complainant" = > "",
"address" = > "",
"name" = > "",
"agency" = > "",
"codefendant" = > {
"0" = > {
"name" = > "sdfsdsd",
"address" = > "fsdf",
"phone" = > "sdf"
},
"1" = > {
"name" = > "sdfs",
"address" = > "sdfs",
"phone" = > "sdf"
}
}
}
}
}
我正在做的是获取数据并保存它:
jcharge = params[:charge]
if !jcharge.nil?
jcharge.each do |key,charge|
e = JCharge.new(charge)
e.cmap_id = data.id
e.save
charge_id = e.id
codefd = charge.codefendant
if !codefd.nil?
codefd.each do |k,codef|
cod = JuCharge.new(codef)
cod.jucharge_id = data.id
cod.save
end
end
end
end
我收到了这个解析错误:
undefined method `codefendant' for #<ActiveSupport::HashWithIndifferentAccess:0x44b5ab0>
答案 0 :(得分:1)
在您的示例中charge
是一个哈希。您可以使用方括号访问其值:
charge.codefendant # undefined method
charge[:codefendant] #=> ...