10

我正在尝试使用 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。

4

1 回答 1

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"
于 2010-01-06T21:33:23.910 回答