2010-08-19 73 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