JavaScript在生产环境中不起作用

时间:2014-06-16 13:22:20

标签: javascript ruby-on-rails ruby-on-rails-3 plugins

我正在使用数据表,一个JavaScript插件来对表中的记录进行排序,过滤,搜索....

在一些foruns中搜索,我看到我是否在config / enviroments / production.rb中设置了以下这一行

config.serve_static_assets = false

到真

 config.serve_static_assets = true

工作并且真的有效。

但我不这样做,因为另一个JavaScripts工作,不推荐这种方式。

所以,我测试了另一种方法,我复制了datatables.js中的所有内容并直接在我的视图中剪切。

第一行是datatables.js的第一行。

<script type="text/javascripts">

 (function(i,zap,p){i.fn.dataTableSettings=[]; var D=i.fn.dataTablesSettings;i.fn...


$("#ranking").dataTable({
sPaginationType: "full_numbers",
iDisplayLength: 20,
bFilter: true,
aLengthMenu: false,
bLengthChange: false,
bAutoWidth: false,
/* fixa os valores da primeira coluna (index) */
fnDrawCallback: function ( oSettings ) {
/* Need to redo the counters if filtered or sorted */
  if ( oSettings.bSorted || oSettings.bFiltered ){
    for ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ ){
        $('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[i] ].nTr ).html( i+1 );
    }
  }
},
aoColumnDefs: [
    { bSortable: false, aTargets: [ 0 ] },
  { aTargets: [ 14 ], bVisible: false }
],
aaSorting: [[ 13, 'desc' ]],
oLanguage: {
  sUrl: "/javascripts/i18n/data_tables_lang.json"
}
});
</script>

再次,在生产中不起作用。

我想知道什么在生产中不起作用,好吧,我复制了代码,我没有使用像Jammit这样的任何其他宝石。

为什么不工作?

1 个答案:

答案 0 :(得分:1)

我的小组定期使用数据表,没有问题。将dataTables.js文件放在vendor / assets / javascripts文件夹中并设置config.serve_static_assets = false

我也有兴趣看到你的production.rb配置文件,因为这个设置可能不是唯一导致问题的设置。

关于config.serve_static_asset设置,这是我在the documentation中找到的内容:

  

config.serve_static_assets配置Rails本身以提供静态资产。默认为true,但在生产环境中关闭,因为用于运行应用程序的服务器软件(例如Nginx或Apache)应该为静态资产提供服务。与默认设置不同,在运行(绝对不推荐!)或使用WEBrick在生产模式下测试应用时将此设置为true。否则,您将无法使用页面缓存,并且对公共目录下经常存在的文件的请求将无论如何都会打到您的Rails应用程序。