2016-05-30 1 views
9

Я только что обновил Rails 5, и у меня возникла странная проблема при использовании CarrierWave.Rails 5, «nil не является допустимым источником ресурсов» с использованием Carrierwave

У меня есть точный код, который я имел для Rails 4:

<%= image_tag article.image_url(:thumb) %> 

Но после обновления я получаю:

nil is not a valid asset source 

Перед обновлением до Rails 5, у меня не было какой-либо подобной проблемы.

В моей Article модели у меня есть:

mount_uploader :image, ImageUploader 

Что может быть виноват здесь? Может ли это быть чем-то другим, а не проблемой обновления Rails?

+1

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

ответ

8

Проблема заключалась в том, что я пытался показать изображение, которое не существовало.

Add unless article.image.blank? решил это.

EDIT: В Rails 4, это не будет иметь только вынесенное ничего без ошибок, в то время как в Rails 5 это вызывает ошибку.

Большое спасибо @BookOfGreg за указание на это.

+5

Для тех, кто попал сюда без несущей: в рельсах 4 это вывело бы пустой тег img, в рельсах 5 он будет подниматься на ноль, так что есть небольшая разница. – BookOfGreg

+1

В солидарности. , –

+1

Там же. Кроме того, изображения по умолчанию не будут отображаться в Rails 5, и для поиска причины может потребоваться справедливая битва. –

7

Я не знаю, это компактное решение или нет, но этот код будет работать.

активировать метод возврата в ваш загрузчик.

def default_url 
    "/assets/fallback/" + [version_name, "default.png"].compact.join('_') 
    end 

Надеюсь, это вам поможет.

Приветствия (у)

+0

Я уже решил это, но я забыл обновить этот пост. В любом случае, спасибо. –

+1

yaaahhh это работает ...... Спасибо @simran Sir :) –

0

Попробуйте это, вам нужно добавить , если не указано в вашем коде. Вам необходимо добавить код ниже

<% = image_tag article.image_url (: thumb), если article.image.blank? %>