0
我有一個new.html.erb
文件這個腳本,在底部,在腳本標籤:事件觸發後,使用Ruby變量
$('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.file.path
還不能在頁面加載存在,所以我有一個錯誤。由於我在complete
事件(並在此特定時間存在)上調用此變量,我應該將此腳本放在另一個文件中,並要求它在我的new.html.erb
中才能生效?我必須將它放在js.erb
文件中嗎?
更一般地說,如何在我的javascript頁面加載後使用erb而不解釋它?
在服務器上評估ruby的東西,而JavaScript在客戶端上運行。如果您想在發生客戶端事件時執行涉及服務器的事情,則必須向服務器發出HTTP請求(ajax)。 – Pointy
感謝您的回答@Pointy。我已經在做AJAX請求了:dropzone通過Ajax將圖像發送到服務器,並且我想在dropzone的完整事件中使用此圖像。由於ruby是在頁面加載時評估的,我怎樣才能得到一個包含這個erb的文件,並在完成事件發生時進行評估? –
您的服務器端代碼需要以某種方式將該URL作爲響應的一部分發回。 (該「完成」處理程序的'file'參數。)ajax操作返回什麼? – Pointy