2010-12-06 4 views
2

Приветствия. Я почти уверен, что есть более чистый способ сделать это, но я не могу его найти.Предоставление изображений в каталоге

У меня есть каталог значков, которые пользователи могут выбрать для включения в свой контент. У меня есть частичный, чтобы создать палитру иконок для них, чтобы выбрать из:

<% @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 %> 

Результатов, возвращаемых Dir включают полный относительный путь на сервере «общественные/изображения/...», но у меня есть удалить «public» для пути src, чтобы найти изображение. Есть ли вызов вместо Dir, который возвращает URI? Я также перепутал с включением RAILS_ROOT в пути к каталогу, но это просто дало мне более длинный путь к файлу для очистки пути запроса.

Спасибо!

ответ

2

Кстати, делать все так, как Rails (и хорошую архитектуру), переместить линию:

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

... вне поля зрения и в контроллер. Контроллер - это место для настройки переменных и доступа к хранилищу данных, а представление - это место для отображения и форматирования информации. Кроме того, я бы реорганизовал это, создав константу для этого пути, например. in environment.rb:

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

Спасибо за дополнительные советы. Получение этих советов и напоминаний в контексте моих вопросов чрезвычайно ценно для кого-то как нового для структуры, как и я. – RSG 2010-12-07 03:53:52

1

Просто сделайте удаление публики, когда вы хватаете список файлов ...

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

Спасибо. Это определенно лучше, чем то, что у меня там есть. Я закрою его в конце дня, если действительно нет более чистого способа сделать это. – RSG 2010-12-06 21:27:33

Смежные вопросы