过去,每当我想通过Ajax更新我的部分视图时,我都会做到以下几点:
#tracks
remove_track
等,然后添加format.js
remove_track.js.erb
,其中包含:$('#tracks').html("<%=j render 'cds/show_tracks' %>");
remote: true
。所有这一切都很好,但现在我尝试使用常规index
方法删除和更新常见destroy
视图以获得灵活性,这意味着我可以通过Ajax或正常方式调用此方法。我认为这样做很常见,必须有比上述所有方法更好的方法。
我可以通过简单地将它放入控制器来获取destroy方法来调用我的destroy.js.erb
文件:
format.js { layout: false }
当然在链接上设置remote: true
。
我不能做的是让视图刷新。我要刷新的表包含在具有唯一ID的div中,但由于它不是部分ID,因此它拒绝刷新内容。也许我错过了什么。
我注定要创建一个部分并使用上面的方法刷新它,还是有更神奇的方法(除了使用Turbolinks)?
感谢。
PS
此外,我只是注意到这有一个额外的缺点,我不能将其余的参数传递给destroy方法,因为它只使用常规CRUD路由传递对象ID来销毁。如果我尝试使用platform(action: destroy)
或platform(method: delete)
,我会收到错误消息:
No route matches {:action=>"destroy", :controller=>"platforms"}
这意味着如果我想传递这些参数,我必须创建一个新路线...
所有这一切的另一个缺点是我在destroy方法中再次重复了索引方法中搜索和排序的所有逻辑。我确信这是绝对不是的方法。
答案 0 :(得分:22)
感谢此页:
http://carmennorahgraydean.blogspot.com.es/2012/10/rails-328-ajax-super-basic-example.html
我找到了正确的方法。如此简单有效。
希望这有助于其他人。