Рендеринг изображений в каталоге - PullRequest
2 голосов
/ 06 декабря 2010

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

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

<% @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 / images / ...", но я должен удалить "public", чтобы путь src нашел изображение. Есть ли вызов для использования вместо Dir, который возвращает URI? Я также возился с включением RAILS_ROOT в путь к каталогу, но это просто дало мне более длинный путь к файлу для очистки в путь запроса.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

Кстати, чтобы сделать вещи в стиле Rails (и хорошей архитектурой), переместите строку:

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

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

ICON_DIRECTORY_PATH = 'public/images/prompts/'
1 голос
/ 07 декабря 2010

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

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