У меня Rails настроен так, чтобы по умолчанию не включать все помощники во все представления:
config.action_controller.include_all_helpers = false
После получения HTTP-запроса от внешнего источника мне нужно обновить одно представление с помощью WebSockets, используя ApplicationController.render
:
def update_ui
stream_id = "operations_#{@operation.user.id}"
ActionCable.server.broadcast(stream_id,
operation: render_operation(@operation))
end
def render_operation(operation)
ApplicationController.render('app_builder/services/download_page', assigns: { operation: operation })
end
При отображении представления происходит сбой из-за отсутствия методов помощника:
# Rendered app_builder/services/download_page.html.erb within layouts/application (87.6ms)
# <Thread:0x00007fc869307120@/app/app/controllers/files_controller.rb:17 run> terminated with exception (report_on_exception is true):
# /app/app/views/app_builder/services/download_page.html.erb:3:in `block in _app_views_app_builder_services_download_page_html_erb___4537878515684940940_70249328594880': undefined method `show_file_status' for #<#<Class:0x00007fc864913960>:0x00007fc8648f7710> (ActionView::Template::Error)
Как можно решить эту проблему, не изменяя конфигурацию, чтобы включить всепомощники по умолчанию?