gpt4 book ai didi

ajax - Rails 通过 Ajax 远程删除和更新 View

转载 作者:行者123 更新时间:2023-12-04 01:35:06 27 4
gpt4 key购买 nike

过去,每当我想通过 Ajax 更新 View 的一部分时,我都会执行以下操作:

  • 从我想要更新的部分中创建一个部分,并给它一个唯一的 ID,比如 #tracks
  • 在 Controller 中为该 Ajax 调用创建一个特殊操作,例如 remove_track更新所有值等并添加 format.js
  • 创建一个与操作同名的新 JS 文件,以便 Rails 自动调用它 remove_track.js.erb其中包含以下内容:$('#tracks').html("<%=j render 'cds/show_tracks' %>");
  • 套装remote: true在调用此操作的链接中。

  • 这一切都很好,但现在我正在尝试删除和更新一个常见的 index查看使用常规 destroy方法的灵活性,这意味着我可以通过 Ajax 或正常调用此方法。我认为这是一件很常见的事情,必须有比上述所有方法更好的方法。

    我可以得到 destroy 方法来调用我的 destroy.js.erb只需将其放入 Controller 即可:
      format.js { layout: false }

    当然还有设置 remote: true在链接上。

    我不能做的是让 View 刷新。我要刷新的表被封装在一个具有唯一 ID 的 div 中,但由于它不是局部的,因此它拒绝刷新内容。也许我错过了一些东西。

    我注定要创建一个部分并使用上述方法刷新它,还是有更神奇的方法(除了使用 Turbolinks)?

    谢谢。

    PS
    此外,我刚刚注意到这有一个额外的缺点,即我无法将其余参数传递给 destroy 方法,因为它只传递对象 ID 以使用常规 CRUD 路由进行销毁。如果我尝试使用 platform(action: destroy)platform(method: delete)我收到一个错误:
    No route matches {:action=>"destroy", :controller=>"platforms"}

    这意味着如果我想传递这些参数,我必须创建一个新路由......

    所有这一切的另一个缺点是,我在销毁方法中再次重复了索引方法中的所有搜索和排序逻辑。我确定这是 绝对不是这样做的方法。

    最佳答案

    感谢这个页面,我找到了正确的方法。如此简单有效。

    http://carmennorahgraydean.blogspot.com.es/2012/10/rails-328-ajax-super-basic-example.html

    Update your destroy line in index.html.erb:

    <%= link_to 'Destroy', pony, method: :delete, data: { confirm:
    'Are you sure?' }, :remote => true, :class => 'delete_pony' %>

    Create a file, destroy.js.erb, put it next to your other .erb files (under app/views/ponies). It should look like this:

    $('.delete_pony').bind('ajax:success', function() {     
    $(this).closest('tr').fadeOut();
    });

    Add format.js { render :layout => false } to your controller:

    respond_to do |format|
    format.html { redirect_to ponies_url }
    format.json { head :no_content }
    format.js { render :layout => false }
    end


    希望这对其他人有帮助。

    关于ajax - Rails 通过 Ajax 远程删除和更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17727004/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com