Zunächst wird ein Auswahlformular für die View benötigt:
- Code: Alles auswählen
<%= form_tag({:action => 'txt_import'}, :multipart => true) %>
<%= file_field("txt","import") %>
<%= submit_tag(".txt importieren") %>
<%= end_form_tag %>
Dieser Code rendert folgendes Formular:
- Code: Alles auswählen
<form action="/controller/txt_import" enctype="multipart/form-data" method="post">
<input id="txt_import" name="txt[import]" size="30" type="file" />
<input name="commit" type="submit" value=".txt importieren" />
</form>
Die über dieses Formular gewählte Datei wird nach Absenden an den Controller /controller/txt_import geschickt (wobei controller natürlich mit dem gewünschten, eigenen Controllernamen ersetzt werden mus).
Dieser Contoller ist wie folgt aufgebaut:
- Code: Alles auswählen
def txt_import
anzahl=0
params[:txt][:import].read.each_line{|line|
c=Content.new
c.text=line.chop
c.save
anzahl+=1
}
flash[:notice]=".txt-Import erfolgreich, #{anzahl} Datensätze wurden eingefügt!"
redirect_to :action=>'list'
end
Die Daten der Datei selbst stehen nach der Übertragung unter params[:text][:import].read bereit und können dann durch .each_line Zeile für Zeile durchgegangen werden. Dadurch wird jede Zeile der Textdatei in eine Datenzelle geschrieben.
In diesem Beispiel werden die Daten in der Tabelle Content in die Spalte text geschrieben und anschließend zur Action list gesprungen.

