2014-06-18 57 views
0

我在我的application.erb.html標記中創建了一個javascript。
管理文件的異步上傳(實際上使用plupload,但與問題無關)。
初始化上傳對象的JavaScript代碼如下:rails,erb in javascript:如何刪除它

$(function() { 

var uploader = new plupload.Uploader(
    { 
     browse_button: 'plupload_browse', 
     url: <%= upload_tmp_path(:format => :json) %>' 
    }); 

//... 

} 

正如你可以在URL線看,因爲我在該局網頁,我靠<%=%>標籤,以便通過腳本上傳網址。
現在,出於模塊化的原因,我想把這個腳本放在它的ad-hoc .js文件中。
由於我不能再使用<%=%>標籤,我最好的選擇是傳遞這樣一個腳本所需的信息?

+1

傳遞變量到您的js – apneadiving

回答

2

只需將其作爲自定義data attribute添加到頁面上的可預測元素上,配置爲browse_button的元素似乎是可能的候選項。

1

DOM

底線是你將不得不通過你的HTML數據傳遞到JS

由於JS是客戶端,和Rails是服務器端的,唯一的方式將數據傳遞給一個獨立的JS腳本(通過滑軌不直接渲染)是爲使用類似gon,由apneadiving建議,或者直接設置在data attribute中的網址與HTML:

#app/controllers/application_controller.rb 
before_action :set_gon 

private 

def set_gon 
    gon.push({ 
     upload_tmp_path: upload_tmp_url(:format => :json) 
    }) 
end 

#app/views/layouts/application.html.erb 
<%= include_gon %> 

這將允許你調用的URL在你的JS如下:使用`gon`是一個解決方案

#app/assets/javascripts/application.js 
gon.upload_tmp_path