过去,每当我想通过Ajax更新 View 的一部分时,我都会做以下事情:
#tracks
remove_track
以更新所有值,等等,并添加format.js
remove_track.js.erb
,其中包含以下内容:$('#tracks').html("<%=j render 'cds/show_tracks' %>");
remote: true
。 所有这些都很好,但是现在我正尝试使用常规
index
方法删除和更新常见的destroy
View ,以实现灵活性,这意味着我可以通过Ajax或正常情况下调用此方法。我认为这是一件很平常的事情,必须有比上述所有方法更好的方法。只需将其放入 Controller 中,就可以得到destroy方法来调用
destroy.js.erb
文件: 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
希望这对其他人有帮助。