2017-08-25 23 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做得很好。 –

相關問題