Как установить поддельный объект запроса для объекта контроллера rails - PullRequest
0 голосов
/ 13 января 2020

Мне нужно использовать метод render_to_string вне контроллера. Поэтому я создаю экземпляр контроллера, например:

  controller = class_name.constantize.new # Rails controller instance
  controller.params = params
  controller.action_name = 'index'
  controller.create_global_current_user user
  index_render_options = controller.send('index_render_options')
  controller.send('render_to_string', index_render_options)

Но он не работает, потому что объект запроса внутри равен нулю. Не могли бы вы помочь мне с этим? Как создать поддельный запрос для объекта контроллера?

1 Ответ

0 голосов
/ 14 января 2020

решено.

Добавлено

  controller.request = ActionDispatch::Request.new({})
  resp = controller.class.make_response!(controller.request)
  controller.set_response!(resp)

, теперь оно выглядит как

      controller = class_name.constantize.new
      controller.params = params
      controller.action_name = 'index'
      controller.request = ActionDispatch::Request.new({})
      resp = controller.class.make_response!(controller.request)
      controller.set_response!(resp)
      controller.create_global_current_user user
      index_render_options = controller.send('index_render_options')
      controller.send('render_to_string', index_render_options)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...