這似乎是一個微不足道的問題,但我似乎無法在任何地方找到答案(這可能是因爲Rails不喜歡我所做的)。Rails在控制器外部調用redirect_to(或渲染)
我使用Sidekiq來處理後臺任務(如圖像處理,上傳等),一個他們完成我想重定向當前頁面到另一個,甚至更好地渲染出一個部分。
我在執行方法當前的代碼看起來是這樣的:
def perform(entry_id)
@entry = Entry.find(entry_id)
#Create, upload image, all stored in @file when complete
if @file.save
#render will go here
else
raise @file.inspect
end
end
所以,我嘗試了好幾種方法來做到這一點,如:
render 'entry/new'
也
render :partial => 'entry/partial'
and
redirect_to @entry, notice: 'File Uploaded'
我甚至試過這種可怕的黑客:
entries_controller.rb
# Called after the background task is completed
def self.done_loading(entry_id)
@entry = Entry.find(entry_id)
@entry.update
end
worker.rb
EntriesController.done_loading(entry_id)
我在做什麼錯?
引用(東西我擡頭): When to use render vs redirect_to when handling error validations
https://gist.github.com/1210155
http://railsforum.com/viewtopic.php?id=16885
之所以我做後臺作業,是因爲它將在Heroku上進行託管(這很明確地告訴你將上傳作爲後臺進程運行)。我並不完全喜歡目前所有的佈局,但現在用戶可以擁有一臺漂亮的小型裝載機。gif讓他們被佔領,並知道它正在處理。我想渲染出一個部分,以便它將更新與後臺任務(完成處理...現在加載...等)我已經看過這兩個railscasts,並使用jQuery文件上傳之前,他們是好的,但我正在嘗試使用sidekiq。 – user1470511
這有點不同,我只是試圖與回形針一起工作。總的來說,有點不同,最後因爲它有點違反「鐵軌規則」,它可能無法工作。在我去之前我想在這裏嘗試,然後重新考慮所有事情。 – user1470511