Javascript 中的 Erb 导致页面加载错误
Erb in Javascript causes error on page load
在我的文件views/posts/new.html.erb中,我在底部有一个脚本:
$('div #mainPhotoDropzone').dropzone({
url: "/photos?post_id=" + $("#post_form").data('post-id'),
complete: function(file){
var url = "<%= @post.photos.first.file.path %>";
$.get(url, function(data){
$('#mainPhotoDropzone').attr('style', "background-image: url('" + data.main_photo + "')");
})
}
我在页面加载时遇到错误,因为 @post.photos.first
尚不存在。这应该在上传完成时触发,所以当文件存在时。
我怎样才能避免这个错误?我不明白为什么当我在 "complete" 事件上定义它时它会在页面加载时执行,而且我没有看到替代方案。
<% ... %>
中的代码在 javascript 发送到客户端之前执行。生成了 javascript,<%= %>
标签被替换为 运行 中代码的结果。所以如果你有例如:
I am <%= "super "*5 %>awesome.
浏览器看到的是:
I am super super super super super awesome
因为代码"super "*5
已经已经运行.
在我的文件views/posts/new.html.erb中,我在底部有一个脚本:
$('div #mainPhotoDropzone').dropzone({
url: "/photos?post_id=" + $("#post_form").data('post-id'),
complete: function(file){
var url = "<%= @post.photos.first.file.path %>";
$.get(url, function(data){
$('#mainPhotoDropzone').attr('style', "background-image: url('" + data.main_photo + "')");
})
}
我在页面加载时遇到错误,因为 @post.photos.first
尚不存在。这应该在上传完成时触发,所以当文件存在时。
我怎样才能避免这个错误?我不明白为什么当我在 "complete" 事件上定义它时它会在页面加载时执行,而且我没有看到替代方案。
<% ... %>
中的代码在 javascript 发送到客户端之前执行。生成了 javascript,<%= %>
标签被替换为 运行 中代码的结果。所以如果你有例如:
I am <%= "super "*5 %>awesome.
浏览器看到的是:
I am super super super super super awesome
因为代码"super "*5
已经已经运行.