javascript - Javascript 中的 Erb 导致页面加载错误

标签 javascript ruby-on-rails erb

在我的文件 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 尚不存在,我在页面加载时遇到错误。这应该在上传完成时触发,因此当文件存在时。

我怎样才能避免这个错误?我不明白为什么当我在“完成”事件上定义它时它会在页面加载时执行,而且我没有看到替代方案。

最佳答案

里面的代码<% ... %>在将 javascript 发送到客户端之前执行。生成了 javascript,<%= %>标签被替换为在其中运行代码的结果。因此,例如,如果您有:

I am <%= "super "*5 %>awesome.

浏览器看到的是:

I am super super super super super awesome

因为代码"super "*5 已经运行

关于javascript - Javascript 中的 Erb 导致页面加载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36089587/

相关文章:

html - 为什么 Rails 给我 "Can' t verify CSRF token authenticity”错误?

javascript - 数组值在两个函数之间传递

ruby-on-rails - 如何从句子中删除单词数组?

ruby-on-rails - Aptana/Eclipse 支持 "js.erb", "css.erb"文件

ruby-on-rails - activeadmin 单例资源

ruby-on-rails - 如何从数组构建正则表达式?

ruby-on-rails-3.1 - Assets 未通过 .erb 预处理器运行

javascript - BootstrapValidator 未显示成功消息

javascript - Stripe 似乎创建了弹出窗口,但在移动设备上将其关闭

javascript - 如何在javascript中将数组与对象合并