Rails 3.2 を実行しています。ThemeRoller ギャラリー (http://jqueryui.com/themeroller/) から「cupertino」テーマを統合しました。可変テーマは Rails 3.2 ではまだサポートされていないため、cupertino 画像を にコピーし./app/assets/images/images
、cupertino CSS スタイル シートを に配置しました./app/assets/stylesheets/cupertino.css.scss
。
application.css には何も追加していません。私の理解では、asset-pipeline は .xml の下にある SCSS ファイルをプリコンパイルするだけです./app/assets/stylesheets
。ここまでは順調ですね。ではapplication.rb
、適切なプロパティを true に設定しています。
config.assets.enabled = true
ここからが興味深いところです。たとえば、jQuery の日付ピッカーをポップアップしても、クパチーノのテーマは表示されません。Ok。これは簡単に対処できます。Cupertino スタイルへのリンクを明示的に宣言するだけです。
<%= stylesheet_link_tag "cupertino" %>
私の開発環境では、これはうまくいきます!jQuery の datepicker を再び上げると、cupertino テーマが表示されます。HTML ビューを開くと、対応するクパチーノ スタイルを選択するリンク ディレクティブが表示されます。
<link href="/assets/cupertino.css" media="screen" rel="stylesheet" type="text/css" />
私の運用環境では、stylesheet_link_tag
動作しません! これは、アセットが本番環境でプリコンパイルされており、Rails が「キー付き」バージョンの cupertino.css を見つけられないためだと思います。つまり、stylesheet_link_tag
適切に機能した場合、次のようなことが期待されます。
<link href="/assets/cupertino-40e24d89d5768c02a1373032957ebd02.css" media="all" rel="stylesheet" type="text/css" />
そこで、アセットをプリコンパイルするプロダクション ログを確認します。何だと思う?cupertino はプリコンパイル済みです。
$ tail -100 log/production.log
...
Compiled cupertino.css (729ms) (pid 5325)
...
<%= stylesheet_link_tag "cupertino" %>
このディレクティブを、キーなしバージョンの cupertino スタイル シートをロードする明示的なリンク ディレクティブに置き換えます。
<link href="/assets/cupertino.css" media="screen" rel="stylesheet" type="text/css" />
それはうまくいきます!開発と生産の両方で。しかし謎は深まる。本番環境では、 のキー付きバージョンapplications.css
、つまりコンパイル済みのすべてのスタイルを開きます。を検索しcupertino
ます。何だと思う?cupertino スタイルはプリコンパイルされています。圧縮されプリコンパイルされたリソースから巻き戻したスタイルの 1 つを次に示します。
.ui-icon {
width:16px;
height:16px;
background-image:url("/assets/jquery-ui/cupertino/ui-icons_72a7cf_256x240-cd87f27304052bb2d63abd3680bb2bbd.png")
}
パスに関連する問題がすぐにわかります。私が見た他のコメントに基づいて驚くべきことではありません。./app/assets/images/images
からに画像を移動し./app/assets/images/jquery-ui/cupertino
ます。同じ問題が再発します。同じ解像度で問題が解決します。
質問cupertino.css
:すべての証拠がリソースがプリコンパイルされたことを示唆しているにもかかわらず、フィンガープリント バージョンの が本番環境で見つからないのはなぜですか?