Может кто-нибудь, пожалуйста, сказать мне, что не так с этим кодом ...?

StackOverflow https://stackoverflow.com/questions/1090685

Вопрос

У меня есть раздел кода в контроллере, который заменяет существующий HTML тегом IMG.Код выглядит следующим образом:

 render :update do |page|
   page.replace_html "chart-div", "<img src=\"#{chart.chart_file}\"/>"  #chart.chart_file is a path
 end

По какой-то причине я продолжаю получать следующую ошибку:

  ActionController::RoutingError (No route matches "/public/charts/1_WEEKLY_ACTUAL_LINE.jpg" with {:method=>:get}):

У меня есть НЕТ идея, почему это предполагает, что я хочу куда-то проложить маршрут.Кажется, что у меня должно быть "общедоступно" в начале, чтобы файл был правильно создан, однако я должен удалить "общедоступно", чтобы отобразить изображение.Есть какие-нибудь мысли?Существует ли более стандартный механизм, с помощью которого можно работать с динамически создаваемыми изображениями / элементами?

Лучшие.

ПРИМЕЧАНИЕ:Пожалуйста, никаких "загружаемых" плагинов.Все файлы создаются системой, никаких загрузок не происходит.

Это было полезно?

Решение

Добавляя файл, вы добавляете его в файловую систему, где он находится по адресу RAILS_ROOT/public/charts/1_WEEKLY_ACTUAL_LINE.jpg.

Когда вы хотите отобразить файл, вам нужен URL-адрес, который указывает на него.Файлы, хранящиеся в public доступ к каталогу осуществляется по их пути относительно public справочник.

Вы могли бы попробовать что-то вроде этого:

class Chart < ActiveRecord::Base # or whatever the chart class is
  def chart_url
    chart_file.gsub(%r{^/public}, "")
  end
end

Или же вы можете сохранить URL-адрес в базе данных и сделать:

class Chart < ActiveRecord::Base # or whatever the chart class is
  def chart_file
    "/public#{chart_url}"
  end
end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top