2010-05-17 85 views
6

我想在窗體中輸入某些無效的內容時顯示帶有錯誤消息的模式窗口,但如果一切正常,則顯示另一個操作。然而,當我嘗試用無法從Rails控制器渲染JavaScript

render :js => "jQuery.facebox(#{...})" 

顯示模式窗口顯示僅稱爲實際的JavaScript:

try { 
    jQuery.facebox(...) 
} catch (e) { alert('RJS error:\n\n' + e.toString()); 
    alert('jQuery.facebox(\"<div class=\'error\'>Error</div>\")'); 
    throw e; 
} 
+0

呃,這是什麼問題? – 2010-05-17 14:11:24

+0

問題是:我做錯了什麼? – 2010-05-17 15:57:15

+0

確保你有一個安全防護程序,你的用戶沒有JavaScript。否則他們不會知道他們正在發生錯誤。作爲一個個人規則,我發現刪除模式窗口增加了可用性...並沒有真正幫助這個問題,儘管我想我會分享一些智慧的話。 – Schneems 2010-05-17 22:04:47

回答

1

試試這個

render :update do|page| 
    page << "jQuery.facebox(#{...})" 
end 
+0

同樣的事情發生。 – 2010-05-17 16:05:26

1

也許你應該在jQuery的調用指定您正在等待的響應的數據類型。

例如爲:

$.ajax({ 
    url: "/controller/action/id", 
    success: function(){ 
    $(this).addClass("done"); 
    }, 
    dataType: 'script' 
}); 
7

你試過把代碼中的部分?因此,而不是

render :js => "jQuery.facebox(#{...})" 

嘗試

render :partial => "my_facebox_popup" 

那麼你_my_facebox_popup.html.erb內偏把你的代碼:

<script type = "text/javascript"> 
... 
</script> 

調試你firebug得到任何錯誤。