2010-12-06 6 views
2

Grüße. Ich bin mir ziemlich sicher, dass es einen saubereren Weg dafür gibt, aber ich kann es nicht finden.Rendern von Bildern in einem Verzeichnis

Ich habe ein Verzeichnis von Symbolen, die Benutzer wählen können, um in ihren Inhalt aufzunehmen. Ich habe einen Teil die Palette der Icons erstellen für sie zur Auswahl:

<% @files = Dir['public/images/prompts/*.*'] %> 
<input type="hidden" id="test_prompt_image" value="/images/prompts/default.png" /> 
<% @files.each do |f| %> 
    <div onclick="$('#test_prompt_image').val('<%= f.gsub("public","") %>')" class="MultiColumn"> 
     <img src="<%= f.gsub("public","") %>"/> 
    </div> 
<% end %> 

Der von dem DuFormal zurückgegebenen Ergebnissen enthalten den vollständigen relativen Pfad auf dem Server „public/images/...“, aber ich habe um "public" für den src-Pfad zu entfernen, um das Bild zu finden. Gibt es einen Aufruf anstelle von Dir, der einen URI zurückgibt? Ich habe auch versucht, RAILS_ROOT in den Verzeichnispfad aufzunehmen, aber das gab mir nur einen längeren Dateipfad, um in einen Anfragepfad zu gelangen.

Danke!

Antwort

2

By the way, was die Rails Weise zu tun (und gute Architektur), bewegen Sie die Zeile:

@files = Dir['public/images/prompts/*.*'].map {|f| f.sub('public','') } 

... aus der Sicht und in den Controller. Der Controller ist der Ort, an dem die Variablen eingerichtet werden und Datenspeicherzugriff erfolgt. Die Ansicht ist der Ort, an dem die Informationen angezeigt und formatiert werden. Und weiter würde ich dies umgestalten, indem ich eine Konstante für diesen Pfad, z. in environment.rb:

ICON_DIRECTORY_PATH = 'public/images/prompts/' 
+0

Danke für den zusätzlichen Rat. Diese Tipps und Erinnerungen im Zusammenhang mit meinen Fragen zu erhalten, ist für jemanden, der so neu im Framework ist wie für mich, äußerst wertvoll. – RSG

1

tun nur die von der Öffentlichkeit zu entfernen, wenn Sie die Liste der Dateien packen ...

@files = Dir['public/images/prompts/*.*'].map {|f| f.sub('public','') } 
+0

Danke. Dies ist definitiv eine bessere als das, was ich dort oben habe. Ich werde es am Ende des Tages schließen, wenn es wirklich keinen saubereren Weg gibt, dies zu tun. – RSG

Verwandte Themen