无法从Rails控制器渲染JavaScript

问题描述:

我想在窗体中输入某些无效的内容时显示带有错误消息的模式窗口,但如果一切正常,则显示另一个操作。然而,当我尝试用无法从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

试试这个

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

同样的事情发生。 – 2010-05-17 16:05:26

也许你应该在jQuery的调用指定您正在等待的响应的数据类型。

例如为:

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

你试过把代码中的部分?因此,而不是

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

尝试

render :partial => "my_facebox_popup" 

那么你_my_facebox_popup.html.erb内偏把你的代码:

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

调试你firebug得到任何错误。