Rails 5, «ноль не является действительным источником активов»

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

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

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

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

nil is not a valid asset source

Перед обновлением до Rails 5,У меня не было подобной проблемы.

Что здесь может быть виновато? Это может быть что-то еще, а не проблема обновления Rails?

 Ivan Shamatov30 мая 2016 г., 18:31
Похоже, у вас просто нет изображения в этой записи. Не могли бы вы подтвердить это?

Ответы на вопрос(4)

если условие в вашем коде. Вы должны добавить ниже код

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

Решение Вопроса

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

Добавлениеunless article.image.blank? решил это:

<%= image_tag article.image_url(:thumb) unless article.image.blank? %>

РЕДАКТИРОВАТЬ: ВРельсы 4, это бы просто ничего не отображало без ошибок, в то время как вРельсы 5 это вызывает ошибку. Так что это была проблема обновления.

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

 Leo Brown31 мая 2017 г., 23:37
В знак солидарности ,
 Victor Ivanov04 июл. 2018 г., 13:45
лучше избегатьunless, Код выше можно изменить на<%= image_tag article.image_url(:thumb) if article.image.present? %>
 BookOfGreg28 мар. 2017 г., 10:18
Для тех, кто добирается сюда без несущей волны: в рельсах 4 это вырвало бы пустой тег img, в рельсах 5 оно повысится на ноль, так что есть небольшая разница.
 Joshua Muheim09 июн. 2018 г., 11:48
Если вам все еще нужно создать<img> тег, даже если изображение не доступно, вы можете использоватьcontent_tag(:img, nil, src: "...", alt: "...") (возможно, потому что вы установили его источник с JavaScript позже).
 Tasos Anesiadis05 июл. 2018 г., 03:33
@ViC Я думаю, что в этом случае это точно так же, используяunless...blank а такжеif...present, Было бы плохо использовать, если бы у нас не было чего-то вродеunless...!blank что заставляет человека, читающего код, думать в двойном отрицании
 cd-rum20 сент. 2017 г., 05:14
Там же. Кроме того, отсутствующие изображения по умолчанию вызовут эту ошибку в Rails 5, и может потребоваться немало усилий, чтобы найти причину.

Надеюсь, этот фрагмент поможет будущим читателям.

<td><%= image_tag image.picture.url, size: "100x100" unless image.picture.url.blank? %></td>

без этого кода [разве что image.picture.url.blank?] при загрузке пустого изображения появляется «nil не является допустимым источником ресурсов».

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

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

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

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

 Tasos Anesiadis25 июл. 2016 г., 14:16
Я уже решил это, но я забыл обновить этот пост. В любом случае, спасибо.

Ваш ответ на вопрос