Rails使用活动存储读取csv文件数据
我有这个课程,我正在使用主动存储
class MaterialsUpload < ApplicationRecord has_one_attached :csv_file end
这是附件
#<ActiveStorage::Attached::One:0x007ff1f0be9e90 @dependent=:purge_later, @name="csv_file", @record= #>
有没有办法可以读取数据,所以我可以做这样的事情
string = materials_upload.csv_file.read CSV.parse(csv_string, headers: true) do |row| # do something end
使用download
来获取文件的内容:
CSV.parse(materials_upload.csv_file.download, headers: true) do |row| # ... end
我认为这可能是另一种选择(当它在磁盘上本地时)。 我使用了这个答案的代码
file_path = ActiveStorage::Blob.service.send(:path_for, materials_upload.csv_file.key) CSV.foreach file_path, headers: true do # ... end
上传后,您可以使用CSV :: Table lib将CSV文件读入HTML表格:
def show @csv_data = CSV.open('uploaded_file.csv', headers: true).read end
视图示例:
<% @csv_data.headers.each do |header| %> <%= header %> <% end %> <% @csv_data.each do |row| %> <% row.each do |value| %> <%= value[1] %> <% end %> <% end %>