у меня есть какая-то сложные PDF логики поколения, которая требует рендеринг вида вне контроллера, а затем проходящую в HTML в WickedPDF
:Rails 5 визуализация набор переменного экземпляра в местных
ActionView::Base.send(:define_method, :protect_against_forgery?) { false }
av = ActionView::Base.new
av.view_paths = ActionController::Base.view_paths
income_statement_html = av.render :template => "reports/income_statement.pdf.erb", :layout => 'layouts/report.html.erb',
locals: {:@revenue_accounts => revenue_accounts,
:@expense_accounts => expense_accounts,
:@start_date => start_date,
:@end_date => end_date,
:@business => business}
Это все прекрасно работает на Rails 4, но перестала работать, когда мы обновили до Rails 5.
Все переменные экземпляра, которые мы устанавливаем здесь, находятся в виде nil
внутри представления. Есть ли способ установить переменные экземпляра из вызова рендеринга, как это?
': @ income_accounts' кажется довольно странным ... попробуйте просто:': income_accounts' (и в вашем шаблоне ссылайтесь на них как на локальные переменные, например 'account_accounts', а не на более глобальные' @ income_accounts') –
@TarynEast не будет ли установка локальной переменной вместо переменной экземпляра внутри представления? – Deekor
Да ... и это тоже должно работать. Идея заключается в том, что вы хотите, чтобы данные вошли в шаблон, чтобы он правильно отображался правильно? тот факт, что это переменная локального переменного vs, должна быть неактуальной для этой цели? –