2013-08-19 12 views
59

私はヒーローアプリに画像を読み込もうとすると、より良い部分を過ごしました。私が試したものはすべてローカルではなく、英雄に配備された後ではありません。Rails 4画像がヒーローにロードされていない

私の資産の下の画像フォルダにpngファイルが保存されています。私はこれらの画像を私のCSSのような構文で参照しています。 Herokuので

#signin { 
    background: url(<%= asset_path 'sf.png' %>); 
    background-size: 100%; 
} 

私は背景を検査する際、資産/ sf.pngのリンクがありますが、あなたはそれをクリックしたときには、それが正しく読み込まれていません示唆、壊れた画像を示しています。

production.rbファイルのconfig.serve_static_assets = falseをtrueとfalseの間で切り替えることを試みましたが、どちらも機能しませんでした。

私はまた、プリコンパイルが常に成功する

group :production do 
    gem 'pg' 
    gem 'rails_12factor' 
end 

を持っています。

Rails 4.他に何を試してみましょうか?

答えて

25

もう1つの問題は、これをherokuにロードする前にローカルで資産をプリコンパイルしていたことです。これには、以下に示す異なる手順を実行する必要があります。アセットをローカルでプリコンパイルする場合は、以下の手順に従わなければなりません。そうしないと、アセットフォルダに行った更新はプロダクトに反映されません。サーバーへ

https://devcenter.heroku.com/articles/rails-asset-pipeline

RAILS_ENV=production bundle exec rake assets:precompile

commitpush

+0

ありがとう、私のvpsのためにもうまくいった。 – rmagnum2002

-1

イメージはデフォルトではアセットとして配信されず、cssとjsのみが配信されます。あなたは、私がこの仕事をするためにいくつかのソリューションを組み合わせることが必要 Heroku does NOT compile files under assets pipelines in Rails 4

+0

最初はうまくいきましたが、別の再コンパイルと別の再読み込みの後に – brad

+0

@bradが壊れましたか? – nXqd

87

この質問に

サイードEhtshamアッバスの答えになっているはずです、ここで私がやったことです:

Gemfile

gem 'rails_12factor', group: :production 

私のエルローコンソール

heroku labs:enable user-env-compile -a yourapp 

production.rb

config.serve_static_assets = true 
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' 
config.assets.compile = true 

私はローカルの資産をプリコンパイルする必要はありませんでした。

+0

ありがとう、魅力のように動作します – AlaskaKid

+0

ありがとう!できます! – jizak

+21

私はすでに宝石を持っていましたが、それ以外の 'config.assets.compile = true'は私には十分でした。 EU Cedarスタック上でRuby 2.0、Rails 4.0を実行しています。 – zykadelic

12

私は同様の問題がありました。私はcustom.css.scssの次の行でそれを解決しました。これがうまくいくかどうか教えてください。

あなたはERBやサス、 see in the Ruby on Rails Guideを使用している場合に応じて、さまざまな方法が行われている資産を参照
background: image-url('sf.png') 

+1

これは私のためにそれを解決しました、ありがとう! – user3408293

+0

これも私のために働いた。私はもともと: 'background:url(file.png)'これを 'background:image-url( 'file.png')に変更することはやりました。 –

+0

これは本当の解決策です。 – samuelkobe

47

解決するには2つのことが必要です。 まず、production.rbファイルで、この2行をfalseからtrueに変更します。

 config.assets.compile = true 
     config.assets.digest = true 

第二に、あなたは

 background: image-url("image.jpg") 

background: url("imgo.jpg") 

変更、それをあなたのイメージのために、このような構文をした場合、私はそれはあなたの仕事をしていません願っています。

+0

それは私のために働いたよ:) –

+2

はい! !他には何も私のために働いたが、これは(config.assets.compileを 'true'に設定して)行った。 –

+0

はい、これも私のために働いた!ありがとう!設定:config.assets.compile = true – SaintClaire33

1

私はちょうど画像を表示するのと同様の問題がありました。レールに新しいもの、私は私が使用することができます知らなかった。代わりに、従来のHTMLの

<%= image_tag("fileName.png", alt: "File Name Fancy", size: "100x100")%>

を。

IMAGE_TAGはレールAPIで説明されているが、私はその使用がより良いが、ここで説明している見つける: gem 'rails_12factor', group: :production

Herokuの資産で説明したように: http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/image_tag

私は私のアプリに追加すべてがこの宝石でした - パイプラインのドキュメント。 https://devcenter.heroku.com/articles/rails-4-asset-pipeline

3

Railsは(「4.1.5」)私は画像の同様の問題は、Herokuの上で示すが、ローカルに現れていませんでした。私はペーパークリップやcarrierwave宝石を使用していない、私はローカルともRAILS_ENV =生産私はgithubのにプッシュし、それがHerokuのに細かな展開を使用してプリコンパイルします。

私が持っていることによって、問題を解決:

config.serve_static_assets = true 
config.assets.compile = true 
config.assets.js_compressor = :uglifier 
config.assets.digest = true 

// delete precompiled assets 
bundle exec rake assets:clobber --trace 
RAIL_ENV=production bundle exec rake assets:clobber --trace 

アプリ/資産から公開/資産に画像をコピーしました。

// tests should pass 
bundle exec rake assets:precompile --trace 
RAILS_ENV=production bundle exec rake assets:precompile --trace 

git commit 
git push 

そして、それはHeroku上で正常に動作していました。

1

私も多くのソリューションを試しましたが、私は非常に貴重な解決策と説明を見つけました 1. Herokuはパブリックフォルダ内の資産を探します。つまり、資産をあらかじめコンパイルする必要があります。私の開発環境がPGに設定宝石のsqliteや生産に設定されているときに私の資産をプリコンパイルすることが、あなたはこれを行うだろう。

RB

config.serve_static_assets = true 

あなたが宝石のPGがインストールされていない場合は、それをコメントアウトし、宝石のsqliteを使用すると、すべての資産がプリコンパイルされたとき、この

RAILS_ENV=production bundle exec rake assets:precompile 

を実行するために、本番環境を変え、スイッチバックする必要がありますあなたのデフォルト設定とgit add。、commit、herokuへのプッシュ

関連する問題