我正在尝试创建一个具有多个内部字段的数组,以便在渲染时我可以保存每个字段的字段,如下所示:
@profile = [{module:"user", Description:"module of users"},{module:"products", Description:"module of products"}]
以这种方式呈现和创建记录:
@profile.each do |prof|
Record.create(module: prof.module, Description: prof.descripcion)
end
但是我收到了这个错误:
NoMethodError (undefined method `module' for {:module=>"users", :description=>"module of users"}:Hash):
app/controllers/usuarios_controller.rb:31:in `block in busqueda_usuario_perfil'
app/controllers/usuarios_controller.rb:30:in `each'
app/controllers/usuarios_controller.rb:30:in `busqueda_usuario_perfil'
答案 0 :(得分:2)
它是一个哈希,键是符号,所以你需要使用h[:s]
:
@profile.each do |prof|
Record.create(module: prof[:module], description: prof[:descripcion])
end
但是因为关键是平等的,你可以做得更好:
@profile.each do |prof|
Record.create(prof)
end
我会用小写字母表示键。
答案 1 :(得分:1)
访问哈希使用方括号而不是点。
试试这个:
@profile.each do |prof|
Record.create(module: prof['module'], Description: prof['Description'])
end