2013-03-10 52 views
22

Rails資產管道不包括application.js中所需的文件。Rails資產管道不包括application.js清單中的必需文件

呈現給瀏覽器的唯一的JavaScript文件是application.js中,而不是編譯要求線包括標籤,因爲他們應該是:

// This is a manifest file that'll be compiled into application.js, which will include all the files 
// listed below. 
// 
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. 
// 
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 
// the compiled file. 
// 
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD 
// GO AFTER THE REQUIRES BELOW. 
// 
//= require jquery 
//= require jquery_ujs 
//= require twitter/bootstrap 
//= require bootstrap 
//= require_tree . 

; 
在配置

/application.rb中我有config.assets.enable = true

我正在使用rails 3.2.8,並且我嘗試了使用rvm安裝的ruby 1.9.3-p398和2.0.0-p0。

如何獲取application.js以包含所需的文件?

編輯:它看起來像這個問題上的鎖最近解鎖,並且活動增加了。自從我開始工作已經有一段時間了,代碼不再存在。如果我記得正確,我重新安裝了ruby和rails,並解決了問題。

我應該關閉這個問題嗎?在這種情況下適當的程序是什麼?

+0

@iRichLau我該如何解決?我不想用application.js將文件包含在manefest – everett1992 2013-03-10 23:46:34

+0

中,因爲// require_tree,資產中的所有js文件都會自動加載到rails中。 – 2013-03-10 23:50:30

+1

我知道他們應該,但他們沒有被加載。發送到瀏覽器的唯一資源是application.css和application.js,它們的清單中都沒有包含任何文件。 – everett1992 2013-03-10 23:56:27

回答

13

我回答了這個位置:

Rails 3.2.8 Application.js and Application.css are not working as expcted

這裏的文字:

我也有這個問題,但與Rails和 Ruby的更新版本。

檢查日誌,我服務於Rails緩存 的javascript.js,因爲服務器沒有看到文件中的更改。我去了 需要線路(只有一個)告訴Rails, 文件有變化並重新編譯/使用。 Wellm爲我做到了!

希望它有助於某人。

另一個重要的發現是升級你的Gemfile中的鏈輪寶石。

我有2.2.1版本,並有問題,升級到2.2.2後,它的工作

gem 'sprockets', '2.2.2' 
+0

工作就像一個魅力! TXS @Isaffie – carlosveucv 2014-06-29 17:15:10

+0

@ everett1992你認爲這回答你的問題?如果是這樣,你能標記它嗎?謝謝 – lsaffie 2014-06-29 20:45:19

+1

更新從'2.2.1'到'〜> 2.2.2'的鏈輪爲我工作。謝謝。 – imderek 2014-08-11 14:33:55

0

您是否將引導程序文件複製/粘貼到供應商/資產文件夾或應用程序/資產中?資產管道默認包含app/assets文件夾,而不是lib /資產或供應商/資產。包括供應商/資產的管道,輸入此命令爲您的應用程序/資產/ JavaScript的/ application.js中的文件:

//= require_tree ../../../vendor/assets/javascripts/ 

要爲你的CSS文件做同樣的:

*= require_tree ../../../vendor/assets/stylesheets/ 

我知道它在文件頂部的評論中說,應用程序,lib或供應商文件夾中的任何文件都將包含在內,但我發現情況並非如此。我無法解釋爲什麼,但看到我的來源here。嘗試上述命令,或將引導文件包含在應用程序/資產文件夾中。希望有所幫助。

+0

這個問題最近重新打開了,我沒有代碼了,所以我不能再做診斷了。在這種情況下什麼是適當的禮儀? – everett1992 2013-10-24 23:02:04

+0

對不起,適當的禮儀是什麼?授予答案,向上/向下投票或其他內容?如果你的意思是其中的一件事,我想這個選擇是你的,因爲問題是你的。你的行爲表明你對答案的看法。 :-) – 2013-10-25 00:09:35

1

其中一個常見原因是資產是在公共/資產中編譯和找到的,在這種情況下,Rails不會重新編譯它們。如果你有資產在這裏,並沒有設置config.serve_static_assets爲false,那麼Rails會不會重新編譯你的資產:

config.serve_static_assets = false 

所以,如果你在公共/資產預編譯的東西,無論是刪除它們,或添加上述行來development.rb

3

如果從3.0.x的升級 - 3.1.X和運行在這一問題升級到3.2.x並且它可以解決這個問題。

我最近從3.0 - 3.1.12升級了一個應用程序,發現資產清單不能使用Ruby 1.9.3,Ruby 2.0或Ruby 2.1.1。然後我繼續升級到3.2.17,使用Ruby 2.1.1,一切似乎都正常工作。

希望這可以幫助任何可能遇到此問題升級的人。

+0

我可以證實,這似乎已經完成了技巧 - 從ruby 1.9.3升級到2.1.5,事情在rails 3.2.6上打破了,當我升級到rails 3.2.21時就修復了。 – 2015-01-11 23:21:04

+0

也似乎爲我工作。可能與上面的鏈輪相關(安裝鏈輪2.2.3(2.1.4))) – pixelearth 2015-12-25 07:49:51

相關問題