预编译rails-3资产管道,使javascript失败,阻止heroku部署

时间:2012-04-27 20:36:51

标签: javascript ruby-on-rails ruby heroku asset-pipeline

我在rails-3.2.3 / bootstrap应用程序上使用datatables js来排序表的字段。

如果我在本地运行应用程序而没有预先编写资产管道,它运行正常,但是,一旦我运行:

RAILS_ENV=production bundle exec rake assets:precompile

生成的公共/资产阻止DataTables插件工作,即使它看起来正确打包到public / assets / manifest.yml文件和public / assets目录中:

lsoave@ubuntu:~/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
lsoave@ubuntu:~/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上运行(我可以从头开始编译应用程序,或者使用本地预编译版本,但它们无论如何都不起作用。)

我该怎么办?

2 个答案:

答案 0 :(得分: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"
});

答案 1 :(得分:0)

这可能有几个原因无效。最好的选择是从这里开始:

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