javascript - 删除图像会导致错误 undefined method `count' for nil :NilClassh Ruby on Rails

标签 javascript jquery ruby-on-rails ruby ajax

当我点击按钮从页面中删除图像时,图像被删除,但我必须刷新页面才能看到它。我收到错误

//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/

相关文章:

javascript - 匹配标准和离群值输入的正则表达式

javascript - Google Chrome/Android 中的日期问题

jQuery 验证器插件 : validate optional field

html - Rails bootstrap flash 不褪色

ruby-on-rails - "Export"Ruby 中的 x509 证书

javascript - 如何在javascript中将图像转换为数字数组(每个数字都有其颜色的像素)?

javascript - 如果我滚动得太快,滚动链接定位将不起作用。有更好的方法吗?

javascript - 如何使用 jquery ui 调整新的事件/克隆元素的大小?

javascript - jQuery - element.on 点击​​匹配案例

ruby-on-rails - 设计:重新发送确认电子邮件时,更改闪存消息