0

「Gruff」を使用して、データベース テーブルのグラフを描画します

この関数の最後のステップは、フォルダーに画像を作成することです

bar_chart.write("/home/lawyer/Capistrano/current/app/assets/images/graph/lawfirm_#{@lawyer.id}.png")

そしてショーページで:この画像を使用して特定のdivに表示します

-if File.exists?("/home/lawyer/Capistrano/current/app/assets/images/graph/lawfirm_#    {@lawyer.id}.png")
= image_tag("graph/lawfirm_#{@lawyer.id}.png") 

私のローカルホストでは問題なく動作しますが、実稼働環境ではイメージが常に表示されません。

コンソール ログには、次のエラー メッセージが表示されます。

Started GET "/assets/graph/lawfirm_2673.png" for 217.86.186.128 at 2013-05-15 10:19:04 +0200
Served asset /graph/lawfirm_2673.png - 404 Not Found (3ms)

ActionController::RoutingError (No route matches [GET] "/assets/graph/lawfirm_2673.png"):

しかし、時にはそれが機能します。イメージを示すことができます。

まず、グラフを描画する機能は同じコントローラーと同じメソッド「index」にあります。最初にグラフを描画してから画像を表示したいと考えています。だから私は追加します

before_filter :draw_graph

メソッド「draw_graph」で描画グラフ関数を移動します

しかし、それでも同じ問題

4

2 に答える 2

0

イメージを app/assets に書き込んでいます。config.assets.compileデフォルトでは、Rails は本番環境でそこからアセットを提供しません ( を参照config/environments/production.rb)。

代わりにあなたのイメージを

bar_chart.write(File.join(Rails.root, "public", "system", "graph", "lawfirm_#{@lawyer.id}.png"))

image_tag を次のように変更します

image_tag("/system/graph/lawfirm_#{@lawyer.id}.png")

public/system/これにより、代わりに動的画像がフォルダーに書き込まれます。

于 2013-12-08T15:48:03.263 に答える
0

アプリで画像を生成しているからだと思いますか?アプリ内でそれらを生成して保存する場合、Heroku などのサービスにデプロイすると、本番環境では機能しません。本番環境でイメージを保持するには、Amazon S3などを使用する必要があります。

この投稿では、同様の問題について説明しています。

AWS をインストールするための gem と、このようなまともなチュートリアルがあります (ペーパークリップでセットアップしますが、同じ原則が適用されます)。

于 2013-05-15T10:03:20.857 に答える