18

SASS を使用して Rails 3.1(sass-rails 3.1) アプリにスタイルシートをロードしています。たとえば、sass パーシャルはin -app/assets/stylesheetsを使用してロードされます。@importapplication.sass

 @import "pages/common"
 @import "pages/**/*"
 @import "jquery-ui.css"

今、私もロードしたいvendor/assets/stylesheetsrequire vendorを使用していないことに注意してください@import pages/*。これは、sassが推奨する方法のようです。ここのファイルは であり、またはcssではありません。やファイルにしか使えないので使えません。sassscss@import ../../../vendor/assets/stylesheets/*sassscss

これを行う方法はありますか?

アップデート

私が今持っているのはこれです。

application.css.scss

//= require_tree .
//= require vendor
//= require_self

これには、上記のすべての sass パーシャルが含まれます。require vendorイン_

vendor/assets/stylesheets/vendor.cssのように見える

//= require_tree .

このアプローチの注意点は、sass ミックスイン (ユーザー定義 & プラグイン) と共通変数がすべてのパーシャルで使用できるわけではないことです。私が今持っているのは、すべてのパーシャルで最初のものです_common_imports.sass@import

common_imports.sass

@import "colors"
@import "compass/css3/gradient"
@import "compass/css3/border-radius"
@import "compass/css3/box-shadow"

common_importsすべてのパーシャルをインポートするのは非常に反復的です。

4

6 に答える 6

22

私があなたを正しく理解していれば、これは役立つと思います。

ブロックconfig/application.rb内の に次を追加します。class Application < Rails::Application

config.sass.load_paths << File.expand_path('../../lib/assets/stylesheets/')
config.sass.load_paths << File.expand_path('../../vendor/assets/stylesheets/')

上記をアプリに追加したところ、次のディレクティブが両方とも機能するようになりました。

  • Import Sass:
    @import 'grid'app/assets/stylesheets/application.css.scssファイルを検索しますvendor/assets/stylesheets/_grid.scss
  • 通常の CSS をインポート
    @import 'background'application.css.scssますvendor/assets/stylesheets/background.css

それは役に立ちますか?問題を誤解していたらごめんなさい!

于 2011-09-30T21:24:48.967 に答える
3

vendor/assets からアセット ファイルをロードするには、以下のパスを使用できます。

以下の行を application.css ファイルに追加すると、うまく機能します。

 *= require_tree ../../../vendor/assets/stylesheets/.

Javascript アセットに対しても同じことができます。

于 2014-06-03T06:57:26.683 に答える
2

うーん、アセット マネージャーの使い方がおかしいですね。

app/assets/ 、 lib/assets/、および vendor/assets/* のすべてが /assets/ の同じ場所にマップされるため、Web 側では、それらはすべて同じフォルダーにあるように見えます。

Rails 3.1 を使用しているため、すべきことは css/sass@importではなく sprocketsを使用することですrequire

application.sass の上部に次のものが必要です。

// require pages/common
// require_tree ./pages
// require jquery-ui
// require_self

これにより、スプロケットは本番環境ですべてを同じファイルに配置し、多数のファイルをロードする必要がなくなります。

于 2011-09-10T19:14:13.817 に答える
0

エンジンを使用している場合、これはさらに難しくなります。クイック モンキー パスは、SASS_PATH環境変数にエンジン ベンダー パスを含めることです。これは私のために働いたものですengine.rb

ENV['SASS_PATH'] = "#{ENV['SASS_PATH']}:#{File.expand_path('../../vendor/assets/stylesheets/')}"

その時点から、プロジェクトに複数のエンジンを含める場合は、いつでもこれをメソッドに入れて DRY アップできます。

于 2013-11-11T22:53:34.817 に答える