Formularz z selectem z obrazkami z "images"

Problem:
Chciałbym w formularzu ustawiania obrazka dla produktu (tak, rozszerzam sklep opisany w “Agile Web Development With Rails” :wink: ) umożliwić administratorowi wybranie obrazka już znajdującego się na serwerze, oczywiście w katalogu images mojej aplikacji.
Problem polega na tym, że ścieżki zwrócone przez Dir[] zwracają ścieżki jak najbardziej poprawne, ale nijak się mające do ścieżek samej aplikacji w RoR.

Rozwiązanie tymczasowe:

  • pobranie ścieżki względem aplikacyjnego “roota” (z perspektywy klasy Dir)
  • dostosowanie jej do ścieżek aplikacji metodą “na chama”:

class Product < ActiveRecord::Base
(…)
def self.images
imgs = Dir[“public/images/**/*.{gif, jpg, jpeg}”]
imgs.each {|file| file.sub!(/public/,"")}
end
(…)
end

Pytanie:
czy nie dałoby się tego zrobić logiczniej, ładniej, czyściej, elastycznej - słowem bardziej “the Rails way”?

Hmm, 2 linie kodu to i tak chyba nieźle:) RoR nie ma chyba nic wbudowanego do pobierania listy obrazków, więc trzeba skorzystać z Dir. Możesz zrobić to też tak (nie testowane):

images_paths = Dir.chdir('public/images') { Dir['**/*.{gif,jpg,jpeg,png}'] }

Jeżeli dobrze rozumiem, co to są “ścieżki samej aplikacji w RoR”, to:

Dir.glob(‘public/images/*.{jpg,png,gif}’).map { |x| File.basename(x) }