如何使用新的Javascript文件使Rails响应Ajax请求?

时间:2011-02-22 21:17:02

标签: javascript ruby-on-rails ajax

我有一个Ajax请求来更新网页的一部分。这是我做过的代码:

render :update do |page|
  page.replace_html "my_id", :partial => "my_partial"
end

作为此更新的一部分,我想加载一些新的JavaScript,它处理这个新加载的页面部分的行为。

我直接包含在部分中的JavaScript可以完美地运行:

<script type="text/javascript">
  alert('reached');
</script>

但是,我在部分内部加载的JavaScript没有加载:

<script type="text/javascript" src="/javascripts/myScript.js"></script>

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

我尝试了以下操作,它似乎有效,不确定它是否适用于您的情况,您可能需要重写原型的javascript:

<script type="text/javascript">
var e = document.createElement('script')
e.setAttribute("type","text/javascript");
e.setAttribute("src", 'url_of_js_external');
document.getElementsByTagName('head')[0].appendChild(e);
</script>

答案 1 :(得分:0)

使用jQuery的live框架应该做你想要的。在这里举了一个例子

http://jsfiddle.net/bRxxF/

$('.doit').live('click',function(){
   $(this).addClass('red');
});

基本上,您可以使用live来在页面上查看与您的选择器匹配的新dom元素并响应它们上的事件。这样你的javascript就会被提前加载,但只有在ajax发生时才绑定