Ich importiere eine Datei mit SmarterCSV und ich habe eine Funktion, die bestimmte Aspekte der Datei überprüft und Sie dann umleitet und die Ergebnisse anzeigt.Schienen 4: Überprüfen Sie die Datei und importieren Sie sie, wenn die Bedingungen erfüllt sind
Ich möchte, dass diese Anzeige auch eine Schaltfläche enthält, die "Import" enthält, mit der Sie die gleiche Datei importieren können, solange Sie mit dem Angezeigten zufrieden sind.
Wie kann ich die Datei nach der Weiterleitung an die zweite Funktion übergeben, ohne die Datei erneut auswählen zu müssen?
# validate file and check display
def check_file
@success, @error = Timecard.check_timecard(params[:file])
redirect_to timecards_path, notice: [@success, @error]
end
#import into database if display is satisfactory
def bulk_upload
x = Timecard.import(params[:file])
redirect_to timecards_path, notice: "Times imported successfully."
end
#view showing display
<% if flash[:notice].is_a? String %>
<%= flash[:notice] %>
<% elsif flash[:notice].is_a? Array %>
<div class="container">
<div class="col-xs-10 col-xs-offset-1">
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Regular</th>
<th>Overtime</th>
<th>Sick</th>
<th>Vacation</th>
<th>Holiday</th>
</tr>
</thead>
<tbody>
<% notice[0].each do |success| %>
<tr>
<td style="color: green"><%= success[0] %></td>
<% success[1].each do |type| %>
<td><%= type %></td>
<% end %>
</tr>
<% end %>
<% notice[1].each do |failure| %>
<tr>
<td style="color: red"><%= failure[0] %></td>
<td><%= success[1] %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
<div class="container-fluid">
<div class="col-xs-12 col-md-6 col-md-offset-3 text-xs-center">
<div class="card card-nav-tabs">
<div class="header header-info">
Import Timecard and Send Email
</div>
<div class="content">
<!-- IMPORT GOES HERE -->
</div>
</div>
</div>
</div>
</div>
<% end %>
Ich denke Im ein wenig verwirrt darüber, wie Sie den obigen Code zu implementieren –
Ich habe es die Datei zu speichern, aber die Datei es speichert ist leer. Mit anderen Worten, der Inhalt der ursprünglichen Datei wird nicht geschrieben –
Ich habe festgestellt, dass diese Lösung funktioniert hat: 'tmp = params [: mein_Dateifeld] .tempfile destination_file = Datei.join ('public', 'uploads', params [: my_file_field] .original_filename) FileUtils.move tmp.path, Schicksal_Datei' –