Привет, я передаю большие данные с помощью Rails для загрузки CSV-файла с Rails 5. Я получаю сообщение об ошибке Read error: #<NoMethodError: undefined method
bytesize 'для #> `.Мой метод экспорта:
def export
file_name_prefix = ((@filter.resource.respond_to?(:csv_name)) ? @filter.resource.csv_name : @filter.resource.name.pluralize)
file_name = "#{file_name_prefix}_#{Time.now.strftime("%d_%b_%Y-%H_%M_%S")}.csv"
headers["Content-Type"] = "text/csv; charset=utf-8; header=present"
headers["Content-Disposition"] = "attachment; filename=\"#{file_name}\""
erroneous_call_to_proc = false
utf8_byte_order_mark = "\xEF\xBB\xBF"
self.response_body = proc { |response, output|
unless erroneous_call_to_proc
output.write(utf8_byte_order_mark + @filter.resource.csv_headers.join(',') + "\n")
@filter.resource.find_each_with_order({:filtered_resource => @filter.filter_data}) { |u| output.write(u.to_s) }
end
erroneous_call_to_proc = true
}
end
Когда моя загрузка началась, я получил эту ошибку на консоли.Я также попробовал новый способ следующим образом:
def export
headers['X-Accel-Buffering'] = 'no' # Stop NGINX from buffering
headers["Cache-Control"] = "no-cache" # Stop downstream caching
headers["Transfer-Encoding"] = "chunked" # Chunked response header
headers.delete("Content-Length") # See one line above
self.response_body = Enumerator.new do |lines|
# Uses ActiveRecord Batch API to find records efficently
@filter.resource.find_each do |record|
lines << record.to_csv
end
end
end
, но я получил ту же ошибку для массива Read error: #<NoMethodError: undefined method
bytesize 'для [10000]: Array> `Пожалуйста, помогите мне, как я могу это исправить.Заранее спасибо.