2015-12-16 3 views
0

У меня есть контроллер продуктов, где я показать все свои изображения, доступные в определенной папке:Отображения конкретного изображения от Dir.glob индексной страницы

def index 
    @images = Dir.glob("app/assets/images/database/*.jpg") 
end 

Теперь я пытаюсь связать каждое изображение отдельного динамического шоу страница:

def show 
    @images = Dir.glob("app/assets/images/database/" + params[:id] + ".jpg") 
end 

к сожалению, я получаю сообщение об ошибке "no implicit conversion of nil into String" за довольно долгое время.

В идеале я хочу автоматически отображать все изображения из папки базы данных на индексной странице и связывать их отдельно с действием show, где я использую exifr для получения конкретной информации о каждом изображении.

+0

'params [: id]' is nil. Отсюда и ошибка. Кроме того, зачем использовать 'Dir.glob', если вам нужно одно изображение? –

+0

Я не уверен в альтернативном методе:/ –

ответ

0
def show 
    @images = Dir.glob("app/assets/images/database/" + params[:id] || 
        "no-image" + ".jpg") 
end 

Это не очень хорошая практика. Вы должны использовать любой загрузчик изображений и установить изображение по умолчанию. Например. для CarrierWave:

class MyUploader < CarrierWave::Uploader::Base 
    def default_url(*args) 
    "/images/fallback/" + [version_name, "default.png"].compact.join('_') 
    end 
end 
+0

К сожалению, та же ошибка –

+0

, потому что у вас нет файла изображения. Вы должны создать его явно. –