Greifen Sie über Rails Controller auf den Asset-Pfad zu

70

Ich teile eine Client-Konfigurations-XML-Datei-Seite, die ich auch auf der Serverseite laden muss. Ich habe sie in app / assets / javascripts / configuration.yml abgelegt

Ich kann # {asset_path 'configuration.yml'} in einer Ansicht verwenden, um den Pfad abzurufen, aber ich kann nicht in einem Controller. Ich könnte direkt mit "# {Rails.root} /app/assets/javascripts/configuration.yml" zugreifen, aber beim Bereitstellen des Dateinamens wird die Digest-Zeichenfolge angehängt.

Wie kann ich den gleichen Pfad von einem Controller erhalten?

Marcel M.
quelle

Antworten:

114
ActionController::Base.helpers.asset_path("configuration.yml")

Könnte auch gut sein, configuration.yml in einem anderen Ordner abzulegen, um Javascript von Nicht-Javascript-Dateien zu trennen.

Artem Kalinchuk
quelle
1
Vielen Dank! Ich musste nicht verwenden /assets/. Ich kann einfach ActionController :: Base.helpers.asset_path ("configuration.yml") aufrufen. Ich habe auch darüber nachgedacht, die yml-Datei in einem anderen Ordner abzulegen, habe versucht, sie direkt zum Ordner app / assets hinzuzufügen, konnte aber nicht darauf zugreifen. Trotzdem danke für den Vorschlag.
Marcel M.
1
@MarcelM. Sie müssen dem Suchpfad in application.rb einen weiteren Ordner hinzufügen. Wie soconfig.assets.paths << Rails.root.join("app", "assets", "yml")
Paulo Casaretto
Dies ist in Rails 4 veraltet.
Agis
11
@Agis - vielleicht die neue empfohlene Lösung einschließen.
Michael