12

Rails 3.1の新しいAsset PipelineのどこにGalleriaのような jQuery フレームワークを配置するかについて、少し混乱しています。

技術的には に入る必要/vendors/assets/javascripts あることはわかっていますが、正しく機能させるためにはGalleria、jQuery とテーマを含むフォルダーをライブ サイトのルート ( ) に配置する必要があることを理解しています。/galleria

また、ギャラリーのあるページにのみ表示されるようにするには、次のスクリプトをどこに配置すればよいでしょうか?

<script>
    $('#gallery').galleria({
        width:500,
        height:500
    });
</script>

編集:応答がないことに驚いた!?! もしかしてガレリアってそんなに人気ないの?これらは、ロードしようとしているファイルです。簡単に移動できますが、これらは次のようにバンドルされています。

vendor/
  assets/
    javascripts/
      galleria-1.2.5.js
      galleria-1.2.5.min.js
    galleria/
      themes/
        classic/
          classic-loader.gif
          classic-map.png
          galleria.classic.css
          galleria.classic.js
          galleria.classic.min.js

Sprockets は,と?!?にrequire_tree .すべてをロードすると思っていました。app/assetslib/assetsvendor/assets

4

3 に答える 3

22

私は同じ問題を抱えていましたが、動作するまでに時間がかかりました。最初は、開発では問題なく動作していましたが、本番環境に移行すると、資産ファイル名に「フィンガープリント」が含まれるようになったため、Galleria は黙って失敗しました。これは、jQuery UI テーマや他の多くのスクリプトの問題でもあるようです。

もちろん、古いやり方に戻ってすべてを「パブリック」にすることもできますが、すべての css/js ファイルを自動的にマージし、Rails の方法で行うという利点が必要です。

これが私がそれを機能させた方法です:

vendor/
  assets/
    images/
      classic-loader.gif
      classic-map.gif
    javascripts/
      galleria-1.2.5.js
      galleria.classic.js
    stylesheets
      galleria.classic.css.scss

galleria.classic.cssファイルの名前を に変更しますgalleria.classic.css.scss。次に、画像参照を次のように置き換えます(2つありました):

url("classic-loader.gif")になるimage-url("classic-loader.gif")

更新: Rails 3.1.1 ではこれを行う必要はないようです。ファイルの名前を .css.scss に変更するだけで、Rails が url() 呼び出しを自動的に前処理します。

app/assets/javascripts/application.jsファイルに、次の行があることを確認してください

//= require galleria-1.2.5
//= require galleria.classic
//= require_tree .

app/assets/stylesheets/application.cssファイルに、次の行があることを確認してください

*= require galleria.classic
*= require_tree .

最後に、Galleria には非標準の CSS 読み込み機能が組み込まれているようです。スタイルシートは既に含まれているため、この動作を無効にします。(または Galleria テーマの JavaScript ファイル) を開いてgalleria.classic.js、次の行を置き換えます。

css: 'galleria.classic.css',

と:

css: false,

これにより、Galleria はスタイルシートをロードしないように指示されます。

もう 1 つ、これらのアセットをコンパイルしようとしたときに、どうやらRails 3.1.0のバグと思われるものに遭遇しました。を実行するとrake assets:precompile、次のようなエラーが発生しました。

$ bundle exec rake assets:precompile
rake aborted!
classic-loader.gif isn't precompiled
  (in /vendor/assets/stylesheets/galleria.classic.css.scss)

簡単に言えば、この行をconfig/environments/production.rb次のように設定する必要があります。

config.assets.compile = true

3.1.1 がリリースされたら、これは必要ありません。

于 2011-09-20T04:41:36.260 に答える
3

私はArjenの提案が好きvendor/assets/libsですが、より適切だと思います. これが私のセットアップです:

config/application.rb 内

config.assets.enabled = true
config.assets.paths << "#{Rails.root}/vendor/assets/libs"

app/assets/javascripts/application.js 内

//= require galleria/galleria-1.2.6.min.js

初期化するには:

Galleria.loadTheme('assets/galleria/themes/classic/galleria.classic.min.js');
$('#gallery').galleria();

に渡されたパスがloadTheme()「assets」で始まっていることに注意してください。

galleriaフォルダがそのまま保持されるため、この設定が気に入っています。galleria-1.2.6.min.jsまた、メインの js ファイルに連結されます (http 要求が 1 つ少なくなります)。

于 2012-03-07T02:19:56.273 に答える
2

私もこの問題に遭遇しました。現在の javascripts/stylesheets 構造に収まるように既存のライブラリを分割するのは少し面倒です。そのため、次のように、application.rb ファイルに追加のパスを追加して、アセットをロードすることができます。

    # Enable the asset pipeline
    config.assets.enabled = true
    config.assets.paths << "#{Rails.root}/app/assets/libs"

app/assets の下に「libs」フォルダーを作成し、ガレリア ライブラリをこのフォルダーにコピーして、これをアプリケーション レイアウト ファイルに追加します。

    <%= javascript_include_tag 'galleria/galleria-1.2.4.min.js' %>
    <%= javascript_include_tag 'galleria/themes/classic/galleria.classic.min.js' %>

js ファイルを要求することでガレリア コー​​ドをバンドルすることもできますが、それはあなた次第です。

于 2011-09-11T14:59:02.663 に答える