2017-10-19 24 views
0

Hey, je suis en train d'importer un fichier Excel de ma feuille à base de données, mais je ne sais pas quelque chose ne fonctionne pas obtenir attribut inconnu:attribut inconnu dans des rails 5

Ma feuille est comme ceci:

name title jalebi samosa s1 s2 s3 
    1 4  7  7  7 7 7 
    2 5  6  6  6 6 6 
    3 6  5  5  5 5 5 
    4 7  4  4  4 4 4 

Et ma migration est:

 class CreateTest3s < ActiveRecord::Migration[5.1] 
    def change 
     create_table :test3s do |t| 
     t.string :name 
     t.string :title 
     t.string :jalebi 
     t.string :samosa 
     t.string :s1 
     t.string :s2 
     t.string :s3 

     t.timestamps 
     end 
    end 
    end 

Et mon code d'importation dans le modèle est:

def self.import1(file) 

    spreadsheet = Roo::Spreadsheet.open(file.path) 
      header = spreadsheet.row(1) 
      (2..spreadsheet.last_row).each do |i| 
      row = Hash[[header, spreadsheet.row(i)].transpose] 
      puts row.to_hash 
      product = find_by(id: row["id"]) || new 
      product.attributes = row.to_hash 
      product.save! 
      end 

end 

Chaque fois que je suis en train d'exécuter ce que je reçois cette erreur:

unknown attribute 'samosa ' for Test3. 

et la valeur de hachage est comme ceci:

{"name"=>1, "title"=>4, "jalebi"=>7, "samosa "=>9, "s1"=>7, "s2"=>7, "s3"=>7} 
+0

Pouvez-vous montrer comment vous avez défini le modèle 'Test3'? Dans quelle classe est la méthode 'import1'? Quelle ligne de code génère l'erreur 'attribut inconnu'? – hoffm

Répondre

1

Il ressemble à l'attribut que vous essayez de l'ensemble est "samosa " avec un espace de fin. L'attribut devrait être juste "samosa" sans espace. Je suppose que votre en-tête de feuille de calcul est d'où vient l'espace.

+0

ce fut le problème que j'ai compris, je ne pouvais pas trouver quel était le problème, sauf si je vois le hachage –