刪除和更新視圖在過去,每當我想更新通過Ajax我的觀點的一部分,我已經做了以下內容:Rails的遠程通過Ajax
- 創建偏出我想要的部分更新和給它一個唯一的ID,說
#tracks
- 創建控制器爲Ajax調用專項行動,說
remove_track
可以更新所有的值等,並添加format.js
- 創建一個新的JS文件具有相同名稱作爲動作,所以Rails自動調用它
remove_track.js.erb
其中包含一些例如:$('#tracks').html("<%=j render 'cds/show_tracks' %>");
- 在調用此操作的鏈接中設置
remote: true
。
這一切是好的,但現在我想刪除,並使用常規的方法destroy
靈活更新一個共同index
視圖,這意味着我可以通過Ajax或一般調用此方法。我認爲這是一件很普遍的事情,所以必須有比以上所有更好的方法。
我能得到的破壞方法,通過簡單地把這個到控制器叫我destroy.js.erb
文件:
format.js { layout: false }
當然鏈接設置remote: true
的。
我不能做的就是刷新視圖。我想要刷新的表格被封裝在一個具有唯一ID的div中,但由於它不是局部的,它拒絕刷新內容。也許我錯過了一些東西。
我註定要創建一個部分並使用上面的方法刷新它,或者是否有更神奇的方法來做到這一點(除了使用Turbolinks)?
謝謝。
PS 另外,我只注意到這具有額外的缺點,即我不能則params的其餘部分傳遞給破壞的方法,因爲它僅通過對象ID使用常規CRUD路由破壞。如果我嘗試使用platform(action: destroy)
或platform(method: delete)
我得到一個錯誤:
No route matches {:action=>"destroy", :controller=>"platforms"}
這意味着我必須建立一個新的途徑,如果我想通過這些參數......
另一個缺點這一切都是我重複了在destroy方法中重新搜索和排序索引方法的所有邏輯。我確定這是絕對不是這樣做的方法。
非常感謝。這對我來說非常合適。您應該將其標記爲已接受的答案,或者在此處填寫答案中的代碼。 – marcamillion