当我点击按钮从页面中删除图像时,图像被删除,但我必须刷新页面才能看到它。我收到错误
//The command line
ActionView::Template::Error (undefined method `count' for
nil:NilClass):
1: <% if @photos.count > 0 %>
2: <br/><br/>
3:
4: <div class="row">
型号
//app/models/item.rb
class Item < ApplicationRecord
belongs_to :user
has_many :photos
validates :item_category, presence: true
validates :item_condition, presence: true
end
浏览次数
//app/views/photos/destroy.js.erb
$('#photos').html("<%= j render 'photos_list' %>")
这里的 View 我收到计数未定义的错误
//app/views/photos/_photos_list.html.erb
<% if @photos.count > 0 %>
<br/><br/>
<div class="row">
<% @photos.each do |photo| %>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading preview">
<%= image_tag photo.image.url() %>
</div>
<div class="panel-body">
<span class="pull-right">
<%= link_to item_photo_path(photo.item_id, photo), remote: true, method: :delete, data: {confirm: "Are you sure?"} do %>
<i class="fa fa-trash-o" aria-hidden="true"></i>
<% end %>
</span>
</div>
</div>
</div>
<% end %>
</div>
<% end %>
最佳答案
似乎 @photos
变量在您的销毁操作中不可用。
def destroy
...
@photos = Photo.all
...
end
重构思路:
删除照片后,删除包含已删除照片的 div
。这样您就不应该重新加载整个 div
。
app/views/photos/destroy.js.erb
$('.photo-<%= @photo.id %>').remove();
app/views/photos/_photos_list.html.erb
<div class="row">
<% @photos.each do |photo| %>
<div class="col-md-4 photo-<%= photo.id %>"> <!-- Dynamic class for photo added -->
<div class="panel panel-default">
<div class="panel-heading preview">
<%= image_tag photo.image.url() %>
</div>
<div class="panel-body">
<span class="pull-right">
<%= link_to item_photo_path(photo.item_id, photo), remote: true, method: :delete, data: {confirm: "Are you sure?"} do %>
<i class="fa fa-trash-o" aria-hidden="true"></i>
<% end %>
</span>
</div>
</div>
</div>
<% end %>
</div>
<% end %>
关于javascript - 删除图像会导致错误 undefined method `count' for nil :NilClassh Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48315260/