2013-07-18 27 views
8

Trong quá khứ, bất cứ khi nào tôi muốn để cập nhật một phần của quan điểm của tôi thông qua Ajax, tôi đã thực hiện như sau:Rails từ xa xóa và cập nhật xem qua Ajax

  1. tạo ra một phần ra khỏi phần tôi muốn để cập nhật và cung cấp cho nó một ID duy nhất, nói #tracks
  2. tạo ra một hành động đặc biệt trong bộ điều khiển cho rằng cuộc gọi Ajax, nói remove_track đó cập nhật tất cả các giá trị, vv và thêm format.js
  3. tạo một file JS mới với cùng tên là hành động để Rails gọi nó tự động remove_track.js.erb có chứa một số giống như: $('#tracks').html("<%=j render 'cds/show_tracks' %>");
  4. đặt remote: true trong liên kết gọi hành động này.

Tất cả điều này là tốt, nhưng bây giờ tôi đang cố gắng để xóa và cập nhật một chung index xem bằng cách sử dụng phương pháp destroy thường xuyên cho sự linh hoạt, có nghĩa là tôi có thể gọi phương pháp này hoặc thông qua Ajax hoặc bình thường. Tôi nghĩ rằng đó là một điều phổ biến để làm điều đó có phải là một cách tốt hơn so với tất cả những điều trên.

tôi có thể nhận được phương pháp phá hủy để gọi tập tin destroy.js.erb của tôi bằng cách đơn giản đặt này vào bộ điều khiển:

format.js { layout: false } 

và thiết remote: true vào liên kết khóa học.

những gì tôi không thể làm là làm cho chế độ xem làm mới. Bảng tôi muốn làm mới được bọc trong một div với một ID duy nhất, nhưng vì nó không phải là một phần, nó từ chối làm mới nội dung. Có lẽ tôi đang thiếu một cái gì đó.

Tôi có phải chịu trách nhiệm tạo một phần và làm mới nó bằng phương pháp ở trên hoặc có cách nào hay hơn để thực hiện nó (ngoài việc sử dụng Turbolinks)?

Cảm ơn.

PS Ngoài ra, tôi mới nhận ra có những bất lợi nói thêm rằng tôi không thể vượt qua phần còn lại của params đến phá hủy phương pháp vì nó chỉ vượt qua đối tượng ID để tiêu diệt bằng cách sử dụng các tuyến đường CRUD thường xuyên. Nếu tôi cố gắng sử dụng platform(action: destroy) hoặc platform(method: delete) tôi nhận được một lỗi:

No route matches {:action=>"destroy", :controller=>"platforms"} 

Có nghĩa là tôi phải tạo ra một con đường mới nếu tôi muốn vượt qua những thông số ...

Tuy nhiên, một nhược điểm để tất cả điều này là rằng tôi đang lặp lại tất cả logic cho các tìm kiếm và phân loại mà tôi có trong phương pháp chỉ mục một lần nữa trong phương thức hủy. Tôi chắc chắn đây là chắc chắn không phải là cách để làm điều đó.

Trả lời

19

Nhờ trang này:

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

tôi thấy cách thích hợp để làm điều đó. Rất đơn giản và hiệu quả.

Hy vọng điều này sẽ giúp người khác.

+0

Cảm ơn nhiều. Điều này làm việc hoàn hảo cho tôi. Bạn có lẽ nên đánh dấu nó là câu trả lời được chấp nhận hoặc viết mã trong câu trả lời ở đây. – marcamillion