ApplicationController.renderer.render не может найти партиалы в Ruby on Rails - PullRequest
1 голос
/ 13 мая 2019

Мне нужно визуализировать шаблон Excel после завершения SQL-запроса.И SQL занимает 3-4 минуты для завершения.Поэтому я реализую как выполнение SQL, так и визуализацию шаблона Excel внутри ActiveJob.

. Я называю свой шаблон my_template следующим образом:

class RefreshReportDataJob < ApplicationJob
  include SuckerPunch::Job
  queue_as :default

  def perform
    # <- Run a SQL first here ->

    # After SQL above is complete, render an Excel template
    ApplicationController.renderer.render(
    :file => 'my_controller/my_template', :formats => [:xlsx, :html]
    )
  end

Этот шаблон присутствует внутри views/my_controller/.Этот шаблон отображает 3 партиала _my_partial1, _my_partial2, _my_partial3 - все они также присутствуют в той же папке, что и my_template -> views/my_controller.

При рендеринге my_template я получаю эту ошибку:

ActionView::Template::Error Missing partial application/_my_partial1.xlsx.axlsx with {:locale=>[:en], :formats=>[:xlsx, :html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :svg, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip, :gzip], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder, :axlsx]}. Searched in:
  * "/home/ubuntu/workspace/rails/Mailer/my_app/app/views"

Если Rails может найти my_template, почему он не может найти частичную my_partial1, которая также присутствует в той же папке?Пожалуйста, помогите!

1 Ответ

2 голосов
/ 13 мая 2019

Проблема в том, что вы звоните ApplicationController.render. Это заставит Rails искать шаблон в application/_your_partial.

Вам придется изменить вызов на render, чтобы указать на соответствующий контроллер / шаблон представления.

Так что, если ваш шаблон в app/views/my_controller/_my_partial, вам нужно позвонить MyController.renderer.render(...).

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