我正在尝试在单击按钮时加载部分。所以,我做的是添加一个遥控器=>是,然后在控制器操作中的format.js转到.js.erb文件,我执行此操作:
$('#videospan').html('<%= escape_javascript(render :partial => 'newpartial') %>');
现在视频片已经有了不同的部分,现在我正在添加这个部分。当涉及到它的html部分时,这很好用。现在newpartial里面有一些javascript,遗憾的是没有检测到。是因为html是在javascript之前加载的吗? 如何使其可以访问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()
});
}
所以现在我试图通过将javascript添加到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的partial,然后我想用爆米花向它添加一个视频。不幸的是,当我添加这3行时,即使渲染也不起作用..
使用firebug,当我检查Response返回时,它看起来像这样:
$('#videospan').html(".........");
pop = Popcorn.youtube( "#youtube", http://www.youtube.com/... ,{ width: 400, controls: 0});
pop.controls( false );
pop.play();
所以一切都正确发送,但为什么不显示?
答案 0 :(得分: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) %>';
答案 1 :(得分:1)
任何人都面临着某人的问题..这是由于我遇到的错误。根据这个:http://www.alfajango.com/blog/rails-js-erb-remote-response-not-executing/
当.js.erb文件中存在错误时,代码会无声地失败。要检查错误,只需从firebug复制响应,在命令行中发布并运行它。