Rails,jQuery,.js.erb文件,JS不是由浏览器执行的

时间:2010-01-06 21:24:11

标签: javascript jquery ruby-on-rails ruby erb

我正在尝试使用jQuery,一切都很棒,直到现在,当我尝试渲染部分并将其附加到div时。以下是我设置的方法:

我有一个响应js的动作:

def index
  @objects = Object.find(:all)

  respond_to do |format|
    format.js
  end
end

一个名为index.js.erb的模板,里面有一些javascript:

alert("hello world");

Firebug返回包含以下内容的“text / javascript”响应:

alert("hello world");

但警报窗口没有出现,任何其他JavaScript也没有。我查了http://railscasts.com/episodes/136-jquery 而且或多或少都在追随。我尝试了其他几个方面,例如使用.rjs而不是.erb并将其放在我的模板中:

page.alert("hello world"); 

但是我得到了相同的结果,浏览器从不执行JS。

任何人都知道为什么JavaScript没有被执行?

我正在运行Rails 2.3.4。

1 个答案:

答案 0 :(得分:12)

您必须从您的视图中调用它,否则它将永远不会被执行。

示例控制器:

def index
  @objects = Object.find(:all)

  respond_to do |format|
    format.js{
      render :text => "alert('hello')"
    }
  end
end

和index.html.erb:

<script type="text/javascript">
  $(function(){
    $.ajax({ url: '/controller', type: 'get', dataType:'script' });
  });
</script>

将'/ controller'替换为执行该控制器的索引操作的实际url,默认情况下,对于PostsController它将是'/ posts'等等......

如果您喜欢rjs,您可以在控制器中删除{}并且在其中随意创建一个index.js.erb或index.rjs:

page.alert("hello world")

或:

page << "hello world"