Trước đây, trong đường ray 2.3.8 tôi đã sử dụng nguyên mẫu-người trợ giúp link_to_remote
và form_remote_for
(trong số những người khác).rails3 rails.js và jquery bắt thành công và thất bại của yêu cầu ajax
Những có tùy chọn :update
như sau:
link_to_remote "Add to cart",
:url => { :action => "add", :id => product.id },
:update => { :success => "cart", :failure => "error" }
(một ví dụ từ documentation). Ví dụ này sẽ, sau khi cập nhật thành công phần tử html với lớp "giỏ hàng" và khi lỗi "lớp" lỗi.
Bây giờ tôi tin rằng cách làm việc đã thay đổi, thay vì chúng ta viết:
link_to "Add to cart", :url => {:action => "add", :id => product.id},
:remote => true
và không có tùy chọn để thiết lập :update
nữa. Thay vì một html bình thường, bây giờ chúng ta làm cho javascript, như thế này (trong jquery):
$('.cart').replaceWith(<%= escape_javascript(render :partial => 'cart') %>)
nhưng làm thế nào để bạn xử lý một tình huống lỗi? Tôi có xử lý nó trong bộ điều khiển và sử dụng các chế độ xem riêng biệt không?
Có vẻ như hữu ích đối với tôi bằng cách nào đó có thể bắt chước hành vi mà chúng tôi đã có trước đây. Bất kỳ ý tưởng?
Tôi là người duy nhất nghĩ họ mất một bước trở lại với loại bỏ javascript đơn giản từ Rails? – Amala
Giống như css chia nhỏ nhiều bố cục từ nội dung (HTML), nó cũng tốt hơn để tách hành vi khỏi HTML (do đó sử dụng js không phô trương). Mặc dù điều này thực sự khó hơn (lúc đầu), nó cũng làm cho HTML/JS của bạn dễ đọc hơn (sử dụng tên lớp và mã định danh của bạn một cách khôn ngoan), và làm cho JS của bạn dễ bảo trì và sử dụng lại lâu hơn. – nathanvda
'ajax: loading' không hoạt động đối với tôi, tôi phải sử dụng 'ajax: before' - chỉ trong trường hợp có ai đó gặp phải vấn đề này. (Rails 3.1.1) – tmaximini