首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预编译rails-3资产管道,使javascript失败,阻止heroku部署

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

Stack Overflow用户
提问于 2012-04-28 04:36:51
回答 2查看 2.1K关注 0票数 0

我使用datatables js on rails-3.2.3/bootstrap应用程序对表的字段进行排序。

如果我在本地运行应用程序,而没有预先复制资产管道,它工作得很好,但是,只要我运行:

代码语言:javascript
复制
RAILS_ENV=production bundle exec rake assets:precompile

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

代码语言:javascript
复制
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看起来都是正确的:

代码语言:javascript
复制
app/assets/javascripts/application.js:

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

当然,这更有问题,因为它阻止了rails应用程序在heroku上工作(我可以从头开始编译应用程序,也可以使用本地预编译的版本,但它们无论如何都不能工作)。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-28 15:00:43

我自己把它修好了。您使用的是jquery-datatables-rails gem吗?如果不是,你应该这样做!将下面这一行放到您的gemfile中:

代码语言:javascript
复制
gem 'jquery-datatables-rails', github: 'rweng/jquery-datatables-rails'

然后运行:

捆绑包安装

注意:不要将其放在您的assets组中,否则在部署到heroku时它将无法工作(因为assets组在生产中不会使用)。

此外,请确保在您的application.rb中放入以下行:

代码语言:javascript
复制
config.assets.initialize_on_precompile = false

将这些添加到您的application.js中

代码语言:javascript
复制
//= require dataTables/jquery.dataTables
//= require dataTables/jquery.dataTables.bootstrap

将以下内容添加到您的application.css:

代码语言:javascript
复制
 *= require dataTables/jquery.dataTables.bootstrap

并将其添加到您的控制器的js.coffee文件中,您将在其中使用数据表:

如果使用的是流体容器:

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

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

代码语言:javascript
复制
#// For fixed width containers
$('.datatable').dataTable({
  "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
  "sPaginationType": "bootstrap"
});
票数 4
EN

Stack Overflow用户

发布于 2012-04-28 06:00:37

这可能有几个原因不起作用。最好的选择是从这里开始:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10357504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档