我在show.html.erb
頁面有以下腳本,以更新我的進度欄。但是它使用jQuery,並且由於jQuery只是在我的application.html.erb
佈局的末尾加載,所以我無法在我的頁面上使用它。所以我需要在腳本代碼之前在我的show.html.erb
頁面上。將腳本從頁面遷移到Rails中的js文件
很明顯,這是不正確的做法。我應該在哪裏放置我的腳本代碼,以便它爲此頁面加載?另一個問題是它使用來自控制器的信息(@batch
)。如果我將它移動到我的資產文件夾中的js文件,我該如何訪問它?
下面的代碼放置在show.html.erb
<%= javascript_include_tag "application" %>
<script type="text/javascript">
function progress(){
var progress = setInterval(function() {
var $bar = $('.bar');
var $pct = $('#pct');
$.get("<%= @batch.id %>/status.json", function(data){
if (data.status == "done") {
location.reload();
} else {
$bar.width(data.progress+"%");
$pct.text(data.progress+"%");
}
});
}, 800);
}
$(document).ready(function() {
$.get("<%= @batch.id %>/status.json", function(data) {
if (data.status == "processing") {
progress();
}
});
});
</script>
編輯
年底由於現在我越來越BATCH_ID,我可以檢查它是否存在運行代碼:
$(document).ready(function() {
var batch_id = $("#batch").data("batch-id");
if (batch_id != null) {
$.get(batch_id + "/status.json", function(data) {
if (data.status == "processing") {
progress();
}
});
}
});
是否確定爲代碼在每一頁上運行,即使沒有進度條?或者我應該限制它到我的節目視圖?如果我應該限制它,我該怎麼做? :) –
看來我的編輯解決了這個問題,對吧? ;) –
是的,應該這樣做。關於爲這個單獨的頁面加載jquery ......我不知道最佳做法是什麼。也許值得另一個問題 – mihai