Odczyt z pliku zapisanego lokalnie


#1

CZesc,
mam zapisany w plikach lokalnych plik .csv, chcialbym odczytac jego zawartosc i wynik wyswietlic w tabeli.
O ile nie ma problemu jesli mialbym ten plik wybrac manualnie:
“Browse -> wybieram plik -> Generate report -> i wyswietla mi zawartosc pliku”

index.html.erb:

<%= form_tag import_reports_path, multipart: true do %>
<%= file_field_tag :file %>
<%= submit_tag “Generate report” %>
<% end %>

report.rb:
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
#puts row
Report.create! row.to_hash
end
end

O tyle odczyt z pliku nie dziala:
<%= form_tag import_reports_path, multipart: true do %>
<%= File.read(“public/uploadfile/a_ruby_csv.csv”) %>
<%= submit_tag “Generate report” %>
<% end %>

Jakis pomysl?


#2

brak % przy zamykaniu >

Choć pierwszym pomysłem było sprawdzenie ścieżki i nazwy pliku.


#3

brakujacy % to literowka.
Przy takim zapisie File.read… na stronie wyswietla mi sie zawartosc pliku, ale wyswietla mi sie ona w miejscu przycisku Browse, jako string (chyba), natomiast po wcisnieciu Generate Report tabela nie uzupelnia sie


#4

Ja rozumiem, że Tobie się wydaje, że za pomocą możesz przekazać plik, jeżeli wyświetlisz jego treść w ramach . To tak nie działa (formularz przekazuje zawartość pól input a nie wszystkiego co ma między swoimi znacznikami). Możesz zrobić input ze ścieżką do lokalnego (dla aplikacji rails) pliku. Wtedy w kontrolerze , do którego prześlesz formularz, możesz otworzyć plik i przekazać go do raportu. Lub troszkę przerób metody, żeby było przejrzyściej.


#5

@Jacki, czyli otwarcie pliku (File.read…) ma byc na poziomie kontrolera? natomiast “input ze sciezka do lokalnego pliku” mam zrobic na poziomie czego? i chodzi Tobie o input type…?


#6

Nie wiem do czego dążysz, ale jeśli chcesz otwierać raporty do plików umieszczonych na serwerze, to zrób sobie jakąś listę plików, gdzie będziesz miał ścieżkę do pliku i np. jakąś nazwę. W widoku - w formularzu zrobisz listę tych plików - użytkownik wybiera, zatwierdza. Dane formularza lecą do jakiegoś kontrolera, który zdecyduje co z tym zrobić. Możesz otworzyć plik w kontrolerze i przekazać jakieś konkretne wartości dla jakiegoś widoku, który to zaprezentuje.


#7

Dokładnie tak, mam raport umieszczony na serwerze (skrypt będzie go uaktualniać) który chciałbym wyświetlić na stronie, a użytkownik po zalogowaniu ma sobie to tylko odświeżyć. Dzięki JAcki za teorię, teraz muszę doczytać jak to zrobić.


#8

Postanowiłem, że dodam jakiś obrazek żeby przybliżyć mój pomysł.

krok 1, czyli widok po zalogowaniu,
krok 2, wybieram co chce miec w raporcie, wartosci imie,nazwisko,email beda pobrane z pliku w momencie kiedy wciskam Gen. Raport
krok 3, wyswietla mi sie tabela

co musze zrobic to stworzych checkboxy w formularzu i teraz w jaki sposob je powiazac, ze w momencie wcisniecia Gen. Raport, odpowiedni checkbox bedzie powiazany z odpowiednia kolumna w pliku i co wiecej wyswietli mi te elementy z kolumny(krok3)…