6

編集: 私の最初の質問はもはや正確ではないことが判明しました-問題は dataTables gem に直接関係していません.Apache2 構成に関係していると思います.


jquery-datatables-rails gem が rails アセット パイプラインとうまく連携することに問題があるようです。

問題は最初はこれに似ているように見えましたが、そこから明らかな解決策をたどっても、問題はうまく解決しませんでした。

gem は私の Gemfile にあり、 Railscast エピソード #340の指示に従って、私の HTML テーブルの 1 つにインストールおよび実装されています。アプリケーションを開発モードで実行すると問題なく動作しbundle exec rails s、すべての dataTables 機能が問題なくサイトに表示されます。

カピストラーノを使用するかbundle exec rails s -e production、アセットをプリコンパイルした後、本番環境でサイトを実行しようとすると、コンパイルされたファイルは使用されませんが、すべて public/assets にコンパイルされます。

config.assets.compile = trueまた、プリコンパイルの代わりに使用すると、dataTables 機能が表示されないように見えました。(この2つは正反対だと思いますが、誤解しているかもしれません)

ページに移動してjsエラーコンソールを表示してもエラーはありません.plan htmlテーブルをレンダリングするだけです。

WebページがdataTablesをレンダリングしない原因を突き止めることはできません.私が試したすべての検索は、上記のリンクされた質問と他の5つのページに何度も何度も行き着きました. これらの解決策はどれも、私のレール獣が切望しているものではないようです。

問題が何であるかについての洞察を持っている立派な人々はいますか?


関連ファイルの一部:

app/assets/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

私は貧弱なルビイストであり、レールマンではありません(ただし、グルーヴィーな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

私のapplication.css.scssファイルには次の行があります

*= require dataTables/src/demo_table_jui

それ以外の

*= require dataTables/jquery.dataTables

これは、私が JQuery UI も使用していることが原因である可能性があります (bJQueryUI: true は、coffeescript ファイルの dataTable() に渡されます)。

Rails 3.2.6を使用して、アセットパイプラインを使用して本番環境で正常に動作します。

于 2012-11-13T17:30:37.637 に答える
1

production.rb で config.assets.prefix を定義せず、デフォルト値のままにしてみてください。問題ではありませんが、どういうわけか、ディレクトリ パスに余分な「パブリック」が追加されています。

于 2012-11-14T19:35:23.537 に答える