2012-11-29 25 views
0

我目前正在嘗試單擊按鈕時加載局部圖片。所以,我做什麼,是添加遠程=>真實的,然後在去一個.js.erb文件,其中我做這個控制器動作format.js:RoR - 用Javascript動態地渲染局部圖片

$('#videospan').html('<%= escape_javascript(render :partial => 'newpartial') %>'); 

現在videospan已經有了一個不同部分,現在我正在添加這個部分。這對於它的html部分來說工作得很好。現在新版本里面有一些javascript,遺憾的是沒有被檢測到。是否因爲html在javascript之前加載? 我怎樣才能讓它visibile到HTML?我必須在原始HTML文件中定義它嗎?

謝謝


之一JavaScript方法:

function saveAll() 
{ 
    for(key in storedData){ 
     storedData[key].push.apply(storedData[key],[$('#'+key).position().top,$('#'+key).position().left]); 
    } 


    $.getJSON('<%= save_answers2_course_lecture_path(@course, @lecture) %>',{"stored":storedData}, function(resp){ 
     redirect() 
    }); 
} 

所以現在我想將它添加到js.erb以及傳遞的JavaScript ,所以現在我在js.erb中有這個:

$('#videospan').html('<%= escape_javascript(render :partial => 'newpartial') %>'); 
pop = Popcorn.youtube("#youtube", lec ,{ width: 400, controls: 0});       
pop.play(); 

所以我想渲染那裏有一個#youtube div的部分,然後我想用爆米花向它添加一個視頻。不幸的是,當我添加這3條線,甚至呈現不工作..


Firebug的,當我檢查返回的響應,它看起來像這樣:

$('#videospan').html("........."); 
pop = Popcorn.youtube("#youtube", http://www.youtube.com/... ,{ width: 400, controls: 0}); 
pop.controls(false);       
pop.play(); 

所以一切發送正確,但它怎麼沒有顯示?

+0

你是什麼意思在新黨的JavaScript沒有檢測到? –

+0

jQuery不會檢測到你傳遞給'#html()'的字符串裏面有javascript代碼 – krichard

+0

@JohnNaegle我的意思是我在這個部分有一些JavaScript方法。當我給他們打電話時,他們沒有找到。 – user1069624

回答

1

您最好將盡可能多的Javascript移動到腳本文件中。一種方法是將功能分解成代碼與配置數據:將代碼放在一個.js文件和數據到DOM或變量:

// Option1 -- Using DOM 
// my_function.js 
function saveAll() { 
    // code code code 
    var url = $('#some_dom_element').attr('data-some-attribute-name'); 

    $.getJSON(url, 'blah blah'); 
} 

# my_template.js.erb 
<div id="some_dom_element" data-some-attribute-name="<%= save_answers2_course_lecture_path(@course, @lecture) %>"> 
</div> 

// Option 2 -- Using a variable 
// my_function.js 
function saveAll() { 
    // code code code 
    $.getJSON(url, 'blah blah'); 
} 

# my_template.js.erb 
var url = '<%= raw(save_answers2_course_lecture_path(@course, @lecture) %>'; 
+0

好吧,現在說我正在渲染上面的部分,我想從那裏訪問該JavaScript代碼。我嘗試了使用.js.erb建議的方法,但是我認爲問題出在.js文件中。更確切地說,我有一個onload方法,在部分呈現時需要調用..我怎麼能去做? – user1069624

+0

如果你正在渲染javascript,那麼當響應返回時,'.js.erb'中的任何東西都會在頁面上運行。所以你可以直接將JavaScript放在模板中,避免使用'onload'。 – zetetic

+0

噢好吧..我試過..但我不確定它爲什麼不起作用。我將代碼添加到問題 – user1069624