2017-09-17 2 views
0

Je suis en train de créer un tableau qui a plusieurs champs internes afin que, au moment de rendu, je peux enregistrer les champs de chacun, quelque chose comme ceci:rails avec plusieurs champs

@profile = [{module:"user", Description:"module of users"},{module:"products", Description:"module of products"}] 

à rendre et créer des enregistrements de cette façon:

@profile.each do |prof| 
    Record.create(module: prof.module, Description: prof.descripcion) 
end 

mais je reçois cette erreur:

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' 

Répondre

2

Il est un hachage et les clés sont des symboles, vous devez donc utiliser h[:s]:

@profile.each do |prof| 
    Record.create(module: prof[:module], description: prof[:descripcion]) 
end 

Mais comme les clés sont égales que vous pourriez faire mieux:

@profile.each do |prof| 
    Record.create(prof) 
end 

Et je voudrais utiliser les minuscules pour les clés.

+0

@ luis31 You're Welcome –

1

pour accéder à hachage squ d'utilisation sont des parenthèses au lieu de point.

Utiliser ceci:

@profile.each do |prof| 
    Record.create(module: prof['module'], Description: prof['Description']) 
end 
+0

ne me montre plus l'erreur, mais lors de la sauvegarde des enregistrements les champs sont NULL – luis31