2013-05-15 1 views
0

я использую «Графф», чтобы нарисовать график для моей таблицы базы данныхсоздать изображение, а затем показать на странице не работает в рубине на рельсах

последнего шага этой функции для создания образа в папке

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"): 

, но иногда это работает. он может отображать изображение.

Сначала функция рисования графика находится в одном контроллере и в том же методе «индекс», я надеюсь сначала нарисовать график, а затем показать изображение. так что я добавить

before_filter :draw_graph 

и переместить функцию график рисовать в методе «draw_graph»

, но все та же проблема

ответ

0

Я думаю, что это может быть потому, что вы генерации изображений в приложении? Если вы создаете их в приложении, а затем сохраняете их, они не будут работать на производстве, если вы будете использовать такие сервисы, как Heroku. Вам нужно использовать что-то вроде Amazon S3, чтобы держать ваши изображения в процессе производства.

This post описывает аналогичную проблему.

Существует жемчужина для установки AWS и достойных учебников, таких как this (настройка с помощью скрепки, но применяются те же принципы).

0

Вы записываете свое изображение в приложение/активы; по умолчанию Rails не обслуживает активы оттуда на производстве (см. config.assets.compile в 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/ вместо.

Смежные вопросы