2012-03-18 91 views
0

我在我的Rails 3.2應用程序中包含Javascript與<%= javascript_include_tag "application" %>。而且,我已經包含在被包含在最終的application.js文件company.js.coffee文件下面的CoffeeScript運行時:Rails 3 Javascript Not Working

$("article h2 a").click (e) -> 
    $("article div").hide() 
    $(@hash).slideToggle() 
    e.preventDefault() 
$("article div:not(#1)").hide() 

然而,腳本不能在所有的工作,儘管在功能它是從原始HTML文件複製而來的(儘管不在CoffeeScript中)。而且,類似地,AJAX表單請求似乎也不工作。

有誰知道爲什麼會發生這種情況?有什麼我失蹤?

+0

您的開發控制檯中的任何錯誤?嘗試在該處投擲警報(「是的,它正在工作」)。 – 2012-03-18 22:53:17

+0

我只知道你可以在那裏運行傳統的rails命令。但是,我試着從字面上添加一個JS警報,並且拋出了一個沒有方法的錯誤。這是你的意思嗎?對不起,我是一名PHP程序員,而且是Rails(尤其是3.2)的新手。 – Justin 2012-03-18 22:59:28

+0

對不起,你的意思是你的CofeeScript文件:-) – 2012-03-18 23:01:54

回答

3

我終於找到了答案(我應該首先嚐試的東西)。當我將其他文件包含在資產文件夾中時,我認爲rails自動將$ ->開啓器包含在application.js文件中。但似乎你需要爲每一個做。所以,我剛剛在一切之前加上了$ ->,現在它已經可以工作了。

並且爲其他人閱讀相同問題的說明,請確保$選擇器未被任何其他函數使用,否則您需要執行完整的CoffeeScript JQuery函數參考。

感謝您的幫助!

0

如果article表示元素ID或類,則需要用.article#article來選擇它。我一直都忘記。

+0

我只是用它來選擇一般的HTML5文章標籤,但讓我嘗試添加一個類或ID,看看現在是否適用... – Justin 2012-03-19 00:52:14

+0

不,同樣的問題,當我從文章改爲#article時CoffeeScript並在HTML中進行了更改。 – Justin 2012-03-19 00:59:54

+1

是通過ajax加載的這些元素中的任何一個?如果是這樣,你需要使用.on(「$(」article h2 a「)。on(」click「,(e) - > ...' – brewster 2012-03-19 20:31:28

1

這發生在我身上大約一個星期前,這裏是我的解決方案。首先,我確保我的application.js文件在文件的開頭有這個。

//= require jquery 
//= require jquery_ujs 
//= require_self 
//= require_tree . 

的另一件事是確保軌道是不使用公共目錄。有時你會擁有公共資產和資產,但確保你告訴軌道使用資產。但Rails 3.2應該自動包含這一點。打開你的config >> application.rb並檢查以下內容。

# Enable the asset pipeline 
config.assets.enabled = true 
config.assets.version = '1.0' 
+0

我在這個列表中唯一缺少的是'//= require_self',我補充說,它仍然沒有工作,但是你提示! – Justin 2012-03-19 18:35:23

0

我已經通過刪除%RAILS_ROOT/lib/assets /文件夾中的所有文件解決了同樣的問題。