2014-06-16 71 views
0

我正在使用datatables,JavaScript中的一個插件來對錶中的記錄進行排序,過濾,搜索...。JavaScript在生產環境中不起作用

在一些foruns搜索,我看到了,如果我在配置/ enviroments/production.rb

config.serve_static_assets = false 

設置此線以下爲真

config.serve_static_assets = true 

工作,果然奏效。

但我不這樣做,因爲另一個JavaScript的作品,這種方式不建議。

因此,我測試了另一種方式,我複製了datatables.js中的所有內容,並直接在我的視圖中剪切。

firts行是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

我的團隊經常使用datatables,沒有問題。把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應用程序。