Sto cercando di importare dati CSV al mio db MySQL, ma sto correndo in un errore quando provo a caricare il file:Ruby on Rails 4 - Import CSV - nessuna conversione implicita nella stringa
no implicit conversion of ActionDispatch::Http::UploadedFile into String
Questo è ciò che un riga nel file CSV si presenta come:
751,"01/17/2015","11:17:32","60","TDFSRDSK","2","10","-1","0","3","","26","3","","","1","0"
ecco il codice per l'importazione, in product.rb
def self.import(file)
CSV.foreach(file) do |row|
id, jour, heure, valeur, app, a, b, c, d, e, f, g, h, i, j, k, l = row
userid = current_user.id
product = Product.create(date: jour, valeur: valeur,user_id: userid)
end
end
in produ ct_controller.rb
def import
Product.import(params[:file])
redirect_to_root_url, notice "Products imported"
end
nell'indice:
<%= form_tag import_products_path, multipart: true do %>
<%= file_field_tag :file %>
<%= submit_tag "Import" %>
<% end %>
e routes.rb ho:
resources :products do
collection {post :import}
end
Grazie sono riuscito a sbarazzarsi dei messaggi di errore con la soluzione, ora sembra funzionare ma nessun dato viene aggiunto alla tabella SQL – dogg
Alla creazione, prova usando 'Product.create! (..)'. Quindi tirerà un'eccezione se esiste. –
Grazie, suppongo che il mio mapping dei dati a SQL abbia un problema perché tutti mostrano NULL e nessuno è stato creato perché ho un "valido" sul campo nel mio modello. Cercherò di trovare il modo giusto per mappare ip – dogg