Rails Custom ActionView :: Template :: Handler данные не отправляются - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь создать обработчик шаблонов для CSV в rails 5.2.3

Когда я отрисовываю что-либо через шаблон, все, что я получаю, это «Ошибка сети» для файла без данных

Я не могу найти НИЧЕГО в сети о том, как переменные экземпляра передаются от контроллера к шаблону. если я использую eval или instance_eval, я получаю ошибки для переменных, которые не найдены

require 'csv'
require 'action_view'

class CSVHandler
  VERSION = '0.5.2'

  class CSVGenerator
    def self.generate
      file = CSV.generate(encoding: 'UTF-8', force_quotes: true) do |csv|
        yield csv
      end
      file.html_safe
    end
  end

  class << self
    def default_format
      Mime[:csv]
    end

    def call(template)
      # how can I get the controller headers and response body here???

      <<-RUBY
        begin
          CSVHandler::CSVGenerator.generate do |csv|
            #{template.source}
          end
        end
      RUBY
    end

    def handles_encoding?
      true
    end

  ene
end

ActionView::Template.register_template_handler :csvrb, CSVHandler

образец шаблона:

csv << [
  'Remit Number',
  'Positive Amount',
  'Negative Amount',
  'Successful Amount',
  'Failed Amount',
  'Net Amount',
  'Recorded?',
  'Reconciled?',
  'Locked?',
  'Link'
]
@remittance_list.each do |remittance|
  csv << [
    remittance.remit_number,
    remittance.positive_amount,
    remittance.negative_amount,
    remittance.successful_amount,
    remittance.failed_amount,
    remittance.net_amount,
    remittance.recorded,
    remittance.reconciled,
    remittance.locked,
    remit_form_url(remittance.remit_number),
  ]
end

1 Ответ

0 голосов
/ 07 июня 2019

Моя проблема заключалась в том, что я устанавливал кодировку контента на deflate (я привык к потоковой передаче CSV-файлов и хотел сохранить эту функциональность), после удаления этого все работало, как ожидалось

Iв итоге мне нужно было создать весь гем для функциональности, которую я искал (полный поток с шаблонами).посмотрите на csv_rb , если вам интересно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...