如何处理载波文件名:无



我正在构建一个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错误。

我的目标是返回一个字符串:"选择图像",如果没有图像。

我相信有一个简单的方法可以解决这个问题,我只是忽略了它。

谢谢!

在将image_path传递到File.basename(..)之前,请检查它是否存在图像,如果没有,则显示一个字符串select an image..,希望这可以解决问题。

<div class="form-group">
<label class="btn btn-primary">
Upload a main image file <%= form.file_field :main_image, style: 'display:none;' %>
</label>
<%= if @portfolio_item.main_image.present?%>
<%= File.basename(@portfolio_item.main_image.path) %>
<%else%>
<p>select an image..</p>
<%end%>
</div>

您可以使用,

if @portfolio_item.main_page?
File.basename(@portfolio_item.main_image.path)
end

相关内容

  • 没有找到相关文章

最新更新