Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails-远程销毁方法不呈现部分视图:NoMethodError未定义的方法'id';拍照_Javascript_Ruby On Rails_Ajax_Destroy - Fatal编程技术网

Javascript Rails-远程销毁方法不呈现部分视图:NoMethodError未定义的方法'id';拍照

Javascript Rails-远程销毁方法不呈现部分视图:NoMethodError未定义的方法'id';拍照,javascript,ruby-on-rails,ajax,destroy,Javascript,Ruby On Rails,Ajax,Destroy,尝试远程删除视图中的图像时,我遇到以下错误: NoMethodError (undefined method `id' for #<Photo::ActiveRecord_Associations_CollectionProxy:0x007fa826898200>): app/views/photos/destroy.js.erb:1:in `_app_views_photos_destroy_js_erb__997641922821004789_70180135669200'

尝试远程删除视图中的图像时,我遇到以下错误:

NoMethodError (undefined method `id' for #<Photo::ActiveRecord_Associations_CollectionProxy:0x007fa826898200>):
  app/views/photos/destroy.js.erb:1:in `_app_views_photos_destroy_js_erb__997641922821004789_70180135669200'
  app/controllers/photos_controller.rb:31:in `destroy'
还有我的朋友:

$("#photo-<%= @photo.id %>").html("<%= escape_javascript(render('photos/showpics')) %>");
$(“#photo-”).html(“”);
部分观点是:

<div class="row">
<% @photo.each do |photo| %>
<li id="photo-<%= photo.id %>">
  <div class="col-sm-6 col-md-4">
    <div class="thumbnail" >
            <%= image_tag photo.image_url(:thumb) if photo.image? %>
      <div class="caption">
                <%= photo.title %>
        <p><a href="#" class="btn btn-primary" role="button"><%= link_to 'Remove', delete_photo_path(photo), method: :delete, remote: true %></a></p>
      </div>
    </div>
  </div>
  </li>
 <% end %>
</div>

  • 在我看来,部分视图中的
    @photo
    没有链接,因为在
    destroy
    方法中缺少更好的destroy术语。现在我考虑一下,该方法中的
    @photo
    是否可以传递给javascript?或者最好的方法是什么?

    根据评论更新。 看看你做了什么: 您的
    @photo
    是一个photo::ActiveRecord\u Associations\u CollectionProxy,您正在分配
    @项目的位置调用。photos

    为了得到你的部分作品,你需要得到你删除对象的id。这是:

     $("#photo-<%= @photo_destroy.id %>").html("<%= j render 'photos/showpics', {photos: @photo} ) %>");
    
    $(“#photo-”).html(“”);
    
    您还需要更新部分文件:
    
    #看看那些照片,当我们在j render'photos/showpics'中渲染它时,它来自本地,{photos:@photo}
    

  • 这应该管用

    我最后做的是为
    showpics
    部分中的
    类分配一个id:

    更改javascript:

    $("#photo-<%= @photo.id %>").html("<%= escape_javascript(render('photos/showpics')) %>");
    
    $(“#照片行”).html(“”);
    


    现在,当其中一张照片被删除时,所有照片都得到了正确更新。感谢所有其他人的帮助。

    严格来说,这是可行的,但我正在尝试呈现整个
    showpics
    部分。这将用前一张图片替换最后一张已删除的图片,从而生成两张相同的图片,直到用户刷新
    编辑照片
    部分。有什么线索可以帮我解决吗?你是说你的翻唱部分不正常?我理解这个问题。我应该写另一个答案吗?请把你的问题包括你的回溯——把它们放在评论里很难读,而且它们也不能保证留下来。谢谢
    <div class="row">
     <% photos.each do |photo| %>  # look at that photos, it comes from the local when we render it in j render 'photos/showpics', {photos: @photo}
      <li id="photo-<%= photo.id %>">  
      ....