2010-08-19 71 views
3

我有一个连接不显眼的js文件与视图的问题。Rails 3 and unobtrusive javascript

我有看法名为index.html.erb

... 
<div id="fooBar">say bye!</div> 
... 

而且我有js文件index.js.erb的

$("#fooBar").html("say hello!") 

目前我得到说再见消息,因为JavaScript文件不会被执行。

我在做什么错了?

在我看来,js.erb并未用于此目的。而我只需要在那里查看特定的客户端逻辑举行

由于正常的.js文件中添加脚本参考, 阿列克谢

回答

2

您是否在控制器中指定了render_with:js?

不幸的是,你在那里编写脚本的方式并不会真正起作用。你只能渲染一件事html或js。使用Rails UJS当你点击show(例如)时,它决定了你是否有JS动态呈现或者用HTML呈现它。你无法一次渲染两件事。

试试这个: http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/

+0

也看看rails.js里面。这不是那么大,它会让你很好地理解真正发生的事情。 – maletor 2010-08-19 17:40:48

1

你的元素或文档加载后做什么呢?

尝试

$(function() { 
    $("#fooBar").html("say hello!") 
}); 

假设你使用这似乎是这样的jQuery。

+0

我认为Rails会自动链接index.js.erb的文件index.html.erb视图。但它并没有这样做。或者可能是我应该手动添加脚本引用到我的观点。根据我所看到的样本,没有必要手动添加javascript引用。 – 2010-08-19 06:49:04

1

你有

<%= javascript_include_tag :defaults %> 
<%= csrf_meta_tag %> 
在你的意见/布局/ application.html

?我有JS问题,因为我忘记了后者(仅Rails 3)。

+0

是的,我已经包括他们。 – 2010-08-19 11:46:55