Rails 循环遍历数据库表并按名称拒绝一个对象



我正在根据id在数据库表中搜索对象:

def edit
@attachments = Attachment.where(item_id: @item.id)
end

在视图中,我试图像这样拒绝no-image.jpg图像:

<% @attachments.reject { |attachment| attachment.image.file.identifier == "no-image.jpg" }.each do |attachment| %>
<%= image_tag(attachment.image.url(:mini))%>
<%= link_to "Remove", remove_item_attachment_path(attachment), :data => {:confirm => 'Are you sure?'}, :method => :delete %>
<% end %>

现在,即使文件no-image.jpg在我调试时存在于循环中,它也会产生以下错误:

NoMethodError in Items#edit
undefined method `identifier' for #<CarrierWave::Storage::Fog::File:0x007fb193633520>

错误位于以下行中:

<% @attachments.reject { |attachment| attachment.image.file.identifier == "no-image.jpg" }.each do |attachment| %>

任何想法如何解决这个问题?

看到你也写attachment.image.url我假设image是图像存储在Attachment类中的字段,所以在这种情况下你应该写

attachment.image.identifier 

我认为attachment.image_identifier也是可能的。

相关内容

最新更新