Frage

Ich habe einen Code-Abschnitt in einem Controller, die vorhandene HTML mit einem IMG-Tag ersetzt. Der Code lautet wie folgt:

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

Aus irgendeinem Grund ich folgende Fehler halten Empfang:

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

Ich habe NO Idee, warum es unter der Annahme, ich Route irgendwo zu wollen. Es scheint, dass ich muss die „Öffentlichkeit“ haben am Anfang, um die Datei ordnungsgemäß erstellt werden, jedoch muss ich „public“ entfernen, um das Bild anzuzeigen. Irgendwelche Gedanken? Gibt es einen Standard-Mechanismus, mit dem mit dynamisch erzeugten Bildern / Elementen umgehen?

Best.

Hinweis: Bitte keine "upload" Plug-In. Alle Dateien, die von dem System erstellt werden, gibt es keine Uploads.

War es hilfreich?

Lösung

Wenn Sie die Datei hinzufügen, können Sie es in das Dateisystem hinzufügen, wo es bei RAILS_ROOT/public/charts/1_WEEKLY_ACTUAL_LINE.jpg befindet.

Wenn Sie die Datei angezeigt werden soll, müssen Sie eine URL, die auf sie verweist. Dateien im Verzeichnis gespeichert public zugegriffen wird durch ihren Pfad relativ zum public Verzeichnis.

Sie könnte etwa so versuchen:

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

Alternativ können Sie die URL in der Datenbank speichern, und zu tun:

class Chart < ActiveRecord::Base # or whatever the chart class is
  def chart_file
    "/public#{chart_url}"
  end
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top