2012-05-15 54 views
3

我的Rails應用程序中有一個before_filter,如果用戶在提交請求(以html或js格式)提交請求時將它們註銷,那麼該用戶將發送到login_url將.js控制器請求渲染爲html

我希望我的format.js產生與format.html相同的結果,在以下情況下使用'notice'佈局呈現視圖。我怎樣才能做到這一點?

respond_to do |format| 
    format.js 
    format.html{ render :layout => "notice" } 
end 

回答

5

可以強制使用的模式是這樣的:

respond_to do |format| 
    format.js { render :layout => "notice", :formats => [:html] } 
    format.html { render :layout => "notice" } 
end 

編輯:

你需要的是由響應替換文件的某些部分。

在你的控制器:這是通過,沒有工作一個javascript響應完成

respond_to do |format| 
    format.js 
    format.html { render :layout => "notice" } 
end 

在你login.js查看:

$('#whatever').html('<%= escape_javascript(render :login, formats: [ :html ]) %>') 

...或類似

東西
+0

嗨,謝謝你的提示。您的解決方案阻止我發生錯誤,但我仍然有問題,如果有人提交了AJAX請求,似乎什麼都沒有發生。服務器認爲它已完成其工作,但用戶沒有看到任何不同。如何轉換JS請求,以便登錄頁面顯示給用戶? – sscirrus

+0

在這種情況下,響應必須是包含佈局內容的腳本(請參閱我的編輯): – demental