2016-03-18 49 views
1

在我的文件的意見/職位/ new.html.erb,我有一個腳本底部:厄爾布在Javascript中導致錯誤頁面加載

$('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」現在還沒有。這應該在上傳完成時觸發,因此文件存在時會觸發。

我該如何避免這個錯誤?我不明白爲什麼這是在頁面加載時執行的,當我在「完成」事件中定義它時,我沒有看到替代方案。

+0

您的標記在任何JS運行之前呈現。 – elclanrs

+0

@elclanrs但這不是實際標記的一部分,它是底部的腳本...我怎樣才能避免這個錯誤,並仍然使用這個功能? –

回答

2

<% ... %>內的代碼在javascript發送到客戶端之前執行。生成javascript後,將<%= %>標籤替換爲在其中運行代碼的結果。所以,如果你有,例如:

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

什麼瀏覽器看到的是:

I am super super super super super awesome 

因爲代碼"super "*5已經運行

+0

感謝您的幫助!我怎樣才能避免這個錯誤,但保持類似的功能? –

+0

答案很複雜,你可能會想問一個單獨的問題。 – Shelvacu