2013-07-18 47 views
8

刪除和更新視圖在過去,每當我想更新通過Ajax我的觀點的一部分,我已經做了以下內容:Rails的遠程通過Ajax

  1. 創建偏出我想要的部分更新和給它一個唯一的ID,說#tracks
  2. 創建控制器爲Ajax調用專項行動,說remove_track可以更新所有的值等,並添加format.js
  3. 創建一個新的JS文件具有相同名稱作爲動作,所以Rails自動調用它remove_track.js.erb其中包含一些例如:$('#tracks').html("<%=j render 'cds/show_tracks' %>");
  4. 在調用此操作的鏈接中設置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方法中重新搜索和排序索引方法的所有邏輯。我確定這是絕對不是這樣做的方法。

回答