2012-04-27 99 views
0

我在rails-3.2.3/bootstrap應用程序上使用datatables js來對錶的字段進行排序。預編譯rails-3資產管道,使javascript失敗,阻止heroku部署

如果我在本地運行的應用程序,而不precopiling資產的管道,它工作正常,但是,一旦我運行:

RAILS_ENV=production bundle exec rake assets:precompile 

所產生的公共/資產防止數據表插件來工作,即使它正確顯示打包成公共/資產/ manifest.yml文件和公共/資產目錄:

[email protected]:~/rails/github/gitwatcher$ ls -l app/assets/javascripts 
total 84 
-rw-rw-r-- 1 lsoave lsoave 553 2012-04-27 21:36 application.js 
-rw-rw-r-- 1 lsoave lsoave 99 2012-04-20 21:37 bootstrap.js.coffee 
-rw-rw-r-- 1 lsoave lsoave 3387 2012-04-26 20:12 DT_bootstrap.js 
-rw-rw-r-- 1 lsoave lsoave 71947 2012-04-26 20:12 jquery.dataTables.min.js 
[email protected]:~/rails/github/gitwatcher$ 

要麼application.js中看起來正確:

app/assets/javascripts/application.js: 

//= require jquery 
//= require jquery_ujs 
//= require twitter/bootstrap 
//= require DT_bootstrap 
//= require jquery.dataTables.min 
//= require_tree . 

當然,這更成問題,因爲它阻止rails應用程序在heroku上工作(我可以從頭開始編譯應用程序,或使用本地預編譯版本,但它們無法工作)。

我該怎麼辦?

+0

你爲什麼叫'// = require_tree'後手動包括所有的文件嗎? – 2012-04-28 00:58:28

+0

...不,你不嘗試之後,我錯誤地忘了它。無論如何,它不會停止任何確定的...在刪除之後,管道仍然會中斷DataTables js – 2012-04-28 06:35:10

回答

4

我剛得到它的工作我自己。您是否使用jquery-datatables-rails寶石?如果沒有,你應該!把這一行在你的Gemfile:

gem 'jquery-datatables-rails', github: 'rweng/jquery-datatables-rails' 

並運行:

捆綁安裝

注意:不要把你的資產組或部署到時將無法正常工作heroku(因爲資產組不在生產中使用)。

此外,請務必把此行中您application.rb中:

config.assets.initialize_on_precompile = false 

這些添加到您的application.js

//= require dataTables/jquery.dataTables 
//= require dataTables/jquery.dataTables.bootstrap 

添加到您的application.css:

*= require dataTables/jquery.dataTables.bootstrap 

並將此添加到您的控制器的js.coffee文件中,您正在使用數據表:

如果您使用的流體容器:

#// For fluid containers 
$('#dashboard').dataTable({ 
    "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>", 
    "sPaginationType": "bootstrap" 
}); 

如果您使用的是固定寬度的容器:

#// For fixed width containers 
$('.datatable').dataTable({ 
    "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>", 
    "sPaginationType": "bootstrap" 
}); 
+2

PS:此方法可讓您部署到heroku,而無需首先在本地預先編譯資產。我發現本地的預編譯資產很混亂。 – 2012-04-28 07:02:39

+0

我們有2個jquery-datatables-rails gems,一個是https://github.com/kclair/jquery-datatables-rails另一個是https://github.com/rweng/jquery-datatables-rails哪一個你使用 ? – 2012-04-28 07:17:46

+1

github.com/rweng/jquery-datatables-rails – 2012-04-28 07:27:47

0

可能有一些原因,這是行不通的。最好的辦法就是從這裏開始:

http://www.neilmiddleton.com/heroku-asset-pipeline-faq/

+0

是的,已經完成了。我嘗試了所提到的不同方式,但是即使在部署之前,我也在本地機器上突破了資產管道。 – 2012-04-28 05:50:53