Lesung im Inhalt der Datei Schienen
Ich habe ein Formular, das zu Lesen versuchte, in eine JSON-Datei für die Analyse/Aktionen/etc.. Ich habe Probleme es zu Lesen in der Steuerung.
Anzeigen:
<%= form_tag({:controller => :admins, :action => :upload_json}, {:multipart => true, :method => :post}) do |f| %>
<%= file_field_tag 'datafile' %>
<%= submit_tag "Upload" %>
Controller:
def upload_json
file_data = params[:datafile]
File.read(file_data) do |file|
file.each do |line|
## does stuff here....
end
end
end
Einer ähnlichen Funktion funktioniert in meinem seed.rb
Datei, wenn ich das seeding von Daten - kann einfach nicht, es zu Lesen, die in einer hochgeladenen Datei.
Die Fehler ich erhalte, ist: can't convert ActionDispatch::Http::UploadedFile into String
.
Vielen Dank im Voraus für die Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Herausgefunden. Ändern musste:
zu
Und beschlossen, das
.open
Funktion zu ändern:zu
.tempfile
Methode, die behebt dascan't convert ActionDispatch::Http::UploadedFile into String
Fehler (nicht die änderungFile.open
).File.read
nicht erhalten Sie die line-by-line-Verarbeitung, die Sie möchten. VerwendenFile.open
.params[:datafile] ist eine Instanz von ActionDispatch::Http::UploadedFile Klasse mit tempfile befestigt zu werden.Zum öffnen der tempfile
Versuchen Sie so etwas wie
Öffnen der hochgeladenen Datei mit
path
.params[:datafile]
ist eine Instanz vonActionDispatch::Http::UploadedFile
Klasse, und Sie brauchen, um auf die gespeicherte Datei durch den Aufrufpath
richtig zu verarbeiten.Darüber hinaus
File.read
wird nicht erhalten Sie die line-by-line-Verarbeitung, die Sie suchen. Sie müssen das ändern, umFile.open
.Versuchen Sie dies:
Controller
Alternative Stil