无法从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;
}
答
试试这个
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得到任何错误。
呃,这是什么问题? – 2010-05-17 14:11:24
问题是:我做错了什么? – 2010-05-17 15:57:15
确保你有一个安全防护程序,你的用户没有JavaScript。否则他们不会知道他们正在发生错误。作为一个个人规则,我发现删除模式窗口增加了可用性...并没有真正帮助这个问题,尽管我想我会分享一些智慧的话。 – Schneems 2010-05-17 22:04:47