【问题标题】:Erb in Javascript causes error on page loadJavascript中的Erb导致页面加载错误
【发布时间】:2016-03-18 16:30:38
【问题描述】:

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

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

【问题讨论】:

  • 您的标记在任何 JS 运行之前呈现。
  • @elclanrs 但这不是实际标记的一部分,它是底部的脚本......我怎样才能避免这个错误并仍然使用这个功能?

标签: javascript ruby-on-rails erb


【解决方案1】:

&lt;% ... %&gt; 中的代码在 javascript 发送到客户端之前执行。生成了 javascript,&lt;%= %&gt; 标记被替换为在其中运行代码的结果。因此,如果您有例如:

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

浏览器看到的是:

I am super super super super super awesome

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

【讨论】:

  • 感谢您的帮助!我怎样才能避免这个错误但保持类似的功能?
  • 答案很复杂,你可能想问一个单独的问题。
猜你喜欢
  • 2017-01-03
  • 1970-01-01
  • 2011-10-06
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2020-04-09
相关资源
最近更新 更多