Как загрузить CSV файл в Ruby on Rails?
В моем InvoicesController
у меня есть это:
def index
@invoices = current_user.invoices
respond_to do |format|
format.html
format.xls
format.csv # not working!
end
end
В моем представлении index.html.erb
у меня есть две ссылки для скачивания:
<%= link_to "Download as Excel", invoices_path(:format => "xsl") %>
<%= link_to "Download as CSV", invoices_path(:format => "csv") %>
Шаблоны index.xsl.erb
и index.csv.erb
также существуют.
Первая ссылка работает, то есть файл Excel загружается на компьютер пользователя. Однако CSV файл отображается в браузере и не загружается.
Что я должен сделать, чтобы пользователи могли загружать файлы CSV?
Спасибо за любую помощь.
Ответы
Ответ 1
Попробуйте указать соответствующие заголовки содержимого и, явно отображая ваш шаблон index.csv.erb
в блоке обработчика format.csv
.
# app/controllers/invoices_controller.rb
format.csv do
response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=invoice.csv'
render :template => "path/to/index.csv.erb"
end
Ответ 2
Попробуйте это
format.csv do
response.headers["Content-Type"] = "text/csv; charset=UTF-8; header=present"
response.headers["Content-Disposition"] = "attachment; filename=invoices.csv"
end
Ответ 3
Недавно я обнаружил
render_csv
возможно, проверьте railscast (yay)