Я создаю приложение Ruby on Rails 5.1.6 и работаю с Carrierwave.Моя цель - перечислить имя файла рядом с кнопкой загрузки
<div class="form-group">
<label class="btn btn-primary">
Upload a main image file <%= form.file_field :main_image, style: 'display:none;' %>
</label>
<% unless File.basename(@portfolio_item.main_image.path).nil? %>
<%= File.basename(@portfolio_item.main_image.path) %>
<% end %>
</div>
Я смог извлечь и показать имя файла, используя File.basename(@portfolio_item.thumb_image.path)
, и это прекрасно работает, пока там уже есть файл.
Проблема в том, что на new.html.erb page
появляется ошибка no implicit conversion of nil into String
, потому что файла еще нет (это цель новой страницы).
Я пробовал
unless File.basename(@portfolio_item.main_image.path).nil?
File.basename(@portfolio_item.main_image.path)
end
и некоторые варианты с троичным оператором, но все они возвращаются с одинаковой ошибкой no implicit conversion of nil into String
.
Моя цель состоит в том, чтобы вернуть строку: «выбрать изображение», если изображения нет.
Я уверен, что есть простой способ справиться с этим, я простос видом на него.
Спасибо!