2

私のプロジェクトでは、ほとんどのjsライブラリをgemにバンドルして、必要に応じて更新およびプルできるようにしましたが、最近本番サーバーをセットアップしたため、アセットのコンパイルと静的アセットに問題があります。 / public/assets。

具体的には、アセットパイプラインを使用しない場合、使用しようとしているデータテーブルやその他のJSライブラリまたはcssに問題はありません。私は本番環境でアセットをプリコンパイルし、典型的なnginxセットアップ(railscast#335に基づく)を使用してアセットを提供しています。

静的アセットは次のとおりです-

パブリック/アセット

javascript/jquery.formatCurrency-1.4.0.min.js
stylesheets/datepicker.css
twitter/bootstrap/bootstrap-datepicker.js

パブリック/アセットはこれらの正しい場所ですか?

capistranoを使用してデプロイすると、これらのアセットはページの読み込み時に404を取得し、実際にはサーバーの/ public/assetsディレクトリにコピーされません。

他のページをロードするとき、私は次のようにdatatablesプラグインを呼び出しています

$('#inventory_item_list_datatable').dataTable
  sDom: "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
  sPaginationType: "bootstrap",
  iDisplayLength: 100

Datatablesは私のapplication.jsにコンパイルされ、エラーをスローしませんが、テーブルが実際にレンダリングされることはありません。これはすべてがコンパイルされる順序に関連しているのだろうか?

app / Assets / javascripts / application.js

//= require jquery
//= require jquery_ujs
//= require jquery_nested_form
//= require twitter/bootstrap
//= require dataTables/jquery.dataTables
//= require dataTables/jquery.dataTables.bootstrap
//= require_tree .

app / views / layouts / application.html.erb

<%= stylesheet_link_tag    "application", :media => "all" %>
<link href="/assets/stylesheets/datepicker.css" media="all" rel="stylesheet" type="text/css" />

<%= javascript_include_tag "application" %>
<script src="/assets/twitter/bootstrap/bootstrap-datepicker.js" type="text/javascript"></script>

---データテーブルの問題を編集する

jquery-datatables-rails gemを使用する場合は、gemfileのアセットグループの外部にある必要があります。

4

1 に答える 1

1

デフォルトでは、asset-pipeline には、アセットを配置するための 3 つの場所が付属してapp/assetslib/assetsますvendor/assets。(パイプラインに依存したい場合に備えて)アセットは ではなく に配置する必要がありますpublic/。本番環境では、すべてのアセットが圧縮され、1 つのファイルに変換されます (それぞれ.jsとの場合.css) : application.*.

編集: この場合、assetsディレクトリの構造は異なります。@theIV および @Kosmonaut とのチャットの後、解決策を見つけました:アセットを次のvendor/assets構造のディレクトリに移動します:

Javascript アセットの場合:

 vendor/assets/javascripts/specific_javasripts

CSSの場合:

vendor/assets/stylesheets/specific_stylesheets

デフォルトでは、ディレクトリにはディレクトリもvendor/assets/含まれていないため、作成する必要があります。javascriptsstylesheets

于 2013-02-07T20:58:09.960 に答える