6

编辑: 原来我最初的问题不再准确 - 这个问题与 dataTables gem 没有直接关系,我相信这与我的 Apache2 配置有关。


我似乎对 jquery-datatables-rails gem 与 rails 资产管道的配合有问题。

问题起初看起来与这个类似,但从那里遵循明显的解决方案路径并没有愉快地解决问题。

gem 位于我的 Gemfile 中,根据railscast 第 340 集的说明为我的一个 html 表安装和实现。在开发模式下运行应用程序运行bundle exec rails s良好,所有 dataTables 功能都毫无问题地出现在网站上。

当我尝试在生产环境中运行该站点时(使用 capistrano 或仅bundle exec rails s -e production在预编译资产之后),虽然它们都编译为公共/资产,但不会使用已编译的文件。

config.assets.compile = true代替预编译时,它似乎也没有显示 dataTables 功能。(我相信两者是对立的,但我可能误解了)

当我进入页面并查看js错误控制台时没有错误,它只是呈现了一个计划html表。

我无法弄清楚是什么导致网页无法呈现数据表,而且我尝试过的每次搜索都以上面链接的问题以及一遍又一遍的其他五个页面而告终。这些解决方案似乎都不是我的铁轨野兽所渴望的。

你们中的任何人都对问题可能是什么有任何见解吗?


部分相关文件:

应用程序/资产/javascripts/charts.js.coffee:

jQuery ->
    $('#charts').dataTable({
      "oSearch": {"bSmart": "true", "sSearch": "vdo"}
      "iDisplayLength": 50
     })

应用程序/资产/javascripts/application.js

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

应用程序/资产/样式表/application.css

*= require_self      
*= require dataTables/jquery.dataTables
*= require_tree . 

config/environments/production.rb:
PerfGrapher::Application.configure do # 此处指定的设置将优先于 config/environment.rb 中的设置

# Compress JavaScript and CSS
config.assets.compress = true

# make sure to compile js and css assets
config.assets.precompile += %w(*.js *.css)

# Generate digests for assets URLs
config.assets.digest = true

# disable static asset server
config.serve_static_assets = false

config.compile = false

结尾

4

3 回答 3

1

我的 application.css.scss 文件有以下行

*= require dataTables/src/demo_table_jui

代替

*= require dataTables/jquery.dataTables

这可能只是因为我也在使用 JQuery UI(bJQueryUI: true 被传递给咖啡脚本文件中的 dataTable() )

它使用 Rails 3.2.6 在生产中运行良好,使用资产管道。

于 2012-11-13T17:30:37.637 回答
1

我是一个可怜的 ruby​​ist 并且没有 railsman (虽然我做 groovy grails,是的)。无论如何,既然你说甚至没有调用警报(嗯,这让我很恼火,它只是在 prod 模式下)我只是想问一下它是否有助于查看它是否与 rails 编译 html 文件的方式有关 --- 因此我很想看看 html 文件,看看是否所有脚本都添加到标题中......

我只是认为这可能是由于执行 chart.js.js 时已经加载了 dom。

要查看它是否与此有关,请尝试替换

jQuery ->
    $('#charts').dataTable({
      "oSearch": {"bSmart": "true", "sSearch": "vdo"}
      "iDisplayLength": 50
     })

有类似的东西

imReadyToStart = () ->
    $('#charts').dataTable({
      "oSearch": {"bSmart": "true", "sSearch": "vdo"}
      "iDisplayLength": 50
     })
setTimeOut imReadyToStart, 1000
于 2012-11-15T03:01:04.900 回答
1

尝试不要在 production.rb 中定义 config.assets.prefix 并让它采用默认值。没关系,但不知何故,您在目录路径中获得了额外的“公共”

于 2012-11-14T19:35:23.537 回答