Rails activeadmin Экспорт PDF - PullRequest
0 голосов
/ 11 мая 2018

Я помогаю другу с рубином на сайте рельсов.Я действительно новичок в ruby ​​on rails, и разработчик, который разработал сайт, очень длинный.

Приложение использует гем activeadmin, и в настоящее время в разделе документов есть столбец, который предположительно экспортирует документ в формате PDF, ноне работает.Вот кодИз app / admin / documents.rb

    ActiveAdmin.register Document do

  index do
    column :id
    # This was buggy
    column :user_name do |d|
      d.user.nil? ? 'No User' : (link_to d.user.name, admin_user_path(d.user))
    end
    column :user_email do |d|
      d.user.nil? ? 'No User' : d.user.email
    end
    column :price do |document|
      document.price.nil? ? 'Gratis' : document.price
    end
    column :type_document
    column :status
    column :download do |document|
      link_to 'Download PDF', document_path(document, format: :pdf)
    end
    default_actions
  end

  form do |f|
    f.inputs "Edicion" do
      f.semantic_errors
      f.input :content
      f.input :price
      f.input :status, as: :select, collection: Document::STATUSES
      f.actions
    end
  end

  csv do
    column :user_name
    column :user_email
    column :price
    column('Tipo') { |document| document.type_document }
    column :status
    column(:content) { |document| strip_tags(document.content) }
  end

end

Я установил драгоценный камень wicked_pdf, но я застрял здесь.Я не знаю, как поступить.Я нашел этот код для создания PDF

def generate_pdf(document)
    pdf = WickedPdf.new.pdf_from_string(
      document.content,
      encoding: 'UTF-8',
      page_size: 'A4',
      orientation: 'Portrait',
      template: 'documents/documento.pdf.rb',
      margin:  {    top:               30,                     # default 10 (mm)
                    bottom:            30,
                    left:              20,
                    right:             20
      },
      layout: 'layouts/pdf.html'
    )
    send_data(
      pdf,
      filename: "document_#{document.type_document}_#{document.user.name}.pdf",
      disposition: 'attachment'
    )
  end

Я не уверен, что этот код правильный, а также как я могу связать ссылку Скачать PDF с этой функцией?

Любая помощь будетс благодарностью.

Заранее спасибо

Карлос Соса

1 Ответ

0 голосов
/ 23 мая 2018

У вас уже есть ссылка для загрузки PDF здесь:

link_to 'Download PDF', document_path(document, format: :pdf)

Содержимое метода generate_pdf может быть добавлено или вызвано из этой конечной точки контроллера.

Предполагается, что у вас уже естьDocumentsController#show действие, это может выглядеть примерно так:

def show
  @document = Document.find(params[:id])
  respond_to do |format|
    format.html # render existing view
    format.pdf do
      generate_pdf(@document)
    end
  end
end

private

def generate_pdf(document)
  # same content you posted
end
...