この投稿は、以前のバージョンからRuby on Rails 3.1に移行した後、Asset Pipelineを介した画像の正しい動作のさまざまな仮説の長いテストに触発されました。
だから、挑戦
CSSファイルで、assetsフォルダーにある画像を指定します。 実稼働環境のイメージはプリコンパイルする必要があります。
最終的には、その
よう な公式ガイド 、
ガイドの
翻案 、
スクリーンキャストがあります。 ここでは、「それだけで機能する」というルールは、繊細なポイントへの(または他の)手を許可しない場合にのみ機能します。 どれ?
解決策
実験中に確認された仮説は1つだけです。これは、表示の便宜上、いくつかの部分に便利に分割されています。
ファイルツリーは次のようになります(.erbは気まぐれです。sass-railsエンジンを使用した作業も可能です)。
アプリ/
...資産/
.......画像/
………rails.png
.......スタイルシート/
………application.css.erb
1.プリコンパイルには、rakeアセットではなくプリコンパイルを使用しますが、わずかにやり直した
rakeタスク時々エラーが発生しました
rake assets:precompile
rake aborted! rails.png isn't precompiled
彼女が登場した理由はわかりませんが、私だけではないことは確かです。この問題の解決策は
githubで見つかりました。
2. cssでパスを指定するには、erbテンプレートエンジンのasset_pathヘルパーを使用します。
SASSには
たくさんのヘルパーがありますが、私のプロジェクトでは機能しませんでした。まだ使用していません。
application.css.erbの内容:
#header { background-image: url(<%= asset_path("rails.png") %>)
sass(application.css.scss)を使用する場合:
#header { background-image: image_url('rails.png') }
3. production.rbを設定します。これも役割を果たします。
config.assets.compile = false #
config.assets.digest = true # ( )
config.action_dispatch.x_sendfile_header = "X-Sendfile" # 'X-Accel-Redirect' nginx, , http-server
最後の行は、ローカルマシンで起動したときにかなり悩みました。
画像「localhost:3000 / asset / rails-s43o54m765t656ed76i8gest.png」はエラーが含まれているため表示できません。
問題は、Webrick httpサーバーがx_sendfile_headerディレクティブをサポートしていなかったということです(たぶん私は間違っているかもしれませんが、そこでは間違いなく動作しませんでした)。
おわりに
もちろん、私はまだトピックを理解していませんが、アレクサンダー・セルゲイヴィッチが言ったように、
ああ、どれだけ素晴らしい発見があるか
悟りの精神を準備するUPD :sass-railsの使用方法を示す
githubプロジェクトを作成しまし
た