2017-08-25 20 views
0

嗨我正在处理一些后台作业,我需要从模块或直接从工作人员重定向URL,但据我所知,只有一个方法,即redirect_to,但它不可用在模块和工人根据轨MVC架构,但我需要这样做。是否有任何方式来重定向(如redirect_to)从工人,在轨道模块的URL?

请参考下面是我的代码: -

@oauth = Koala::Facebook::OAuth.new(Figaro.env.fb_app_id,Figaro.env.fb_secret_token,Figaro.env.fb_callback_url) 
oauth_code_url = @oauth.url_for_oauth_code 
redirect_to oauth_code_url 

我也包括了include ActionController::UrlFor得到的模块和工人redirect_to方法,但它再次引发错误,我不能够调用控制器方法进入模块或工作人员。任何人都可以请建议什么是最好的方法来做到这一点?

+0

重定向什么?工作人员本身并未运行浏览器请求。工人是否被控制器调用,然后控制器等待工人完成? –

+0

@FireLancer没有我的工作人员没有参与控制器。实际上,我有一个回调URL,我想在点击那个URL之后,我会收到一个client_code,然后我需要将该客户端代码发送到FB以获取访问令牌,并且此令牌将在一定的时间间隔内过期,因此我需要每次运行此任务。 –

回答

0

重定向仅在请求/响应周期内有意义,工作人员通常发生在后台并且是异步的,因此可能启动的用户不会等待工作人员的响应。

如果您确实想要等待(同步运行工作人员),这不是由工作人员重定向,工作人员应该简单地“发信号”控制器来执行重定向(这是因为您想保持问题)。

+0

我的工人没有参与控制器,这就是为什么我面临这个问题。工人应该简单地“发信号”控制器执行重定向?一名工人如何发出信号给控制器?如果可以通过模块,那么我也可以使用一个模块并将该模块包含在工作者内部? –

+0

如果您的控制器没有涉及,您确切要重定向的人是谁?如果没有用户等待要执行的操作,那么没有人需要重定向? – Leito

+0

是控制器没有涉及,实际上我需要从服务器端生成一个新的令牌,所以我已经编写了代码来刷新令牌到期之前。并没有用户在等待它,并使用redirect_to方法只是命中回调URL,因为我已经尝试其他库如Net,HtttpClient等他们发送请求并获得回应的URL,但回调URL不是回调称为(回到我的其他控制器操作),但redirect_to做得很好。 –

相关问题