2011-07-10 59 views
0

我有這樣的代碼在Rails控制器:等待被定義

def show 
    doc  = Document.find(params[:id]) 
    session = Crocodoc.get_session(doc.uuid) 
    @url = Crocodoc.session_based_viewer_url(session[:sessionId]) 
end 

我需要等到session被定義(或IOW等待Crocodoc.get_session返回)示出了前視圖。這應如何處理?

回答

0

我發現我必須將@url實例var重命名爲其他名稱才能傳遞給視圖。

1

它已經處理。該視圖在控制器操作返回後立即呈現(除非您在操作期間顯式呈現它)。此時session將超出範圍,但@url將被定義。

+0

謝謝。但是我沒有得到的是,如果我在控制檯中運行它,那很好,但是在瀏覽器中查看,'@ url'和'session'在視圖中是零。我認爲你說的會是這種情況,但後來我想也許因爲'Crocodoc.get_session'是一個API請求(閱讀:去網絡)它不會返回之前的視圖顯示。 –

+0

現在我想到了更多,你說得對。 –

+0

@Michael Irwin,這可能是'@ url'在操作過程中正被_assigned_'nil'。在使用'puts'或'debugger'離開動作之前,在賦值後測試'@ url'的值。如果視圖正在呈現,那麼'get_session'返回_something_。 – Mori