Odczyt z pliku zapisanego lokalnie

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?

brak % przy zamykaniu >

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

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

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.

@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…?

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.

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ć.

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)…