Tôi đã chỉnh sửa tại chỗ trên một trang trong ứng dụng của mình (sử dụng Rails 2.3.5 và jQuery). Tôi muốn biết cách hiển thị lỗi trên trang khi cập nhật không thành công.Cách hiển thị lỗi máy chủ trong Rails 2.3.5 với JSON và jQuery
Tôi đang sử dụng ajax (một XMLHttpRequest) để lưu bản cập nhật vào đối tượng Nhận xét. Bộ điều khiển có phương thức cập nhật như sau:
def update
@comment = Comment.find(params[:id])
respond_to do |format|
# if @comment.update_attributes!(params[:comment])
if false #deliberately forcing a fail here to see what happens
format.json { render :nothing => true }
else
format.json { render :json => @comment.errors, :status => :unprocessable_entity }
end
end
end
Trong Firebug, tôi có thể thấy máy chủ trả về "422" (mã trạng thái lỗi xác thực hợp lệ). Nhưng đó là một phản hồi đối với một XMLHttpRequest vì vậy không có chuyển hướng đến một trang lỗi.
Tôi nghĩ rằng tôi thực sự muốn làm điều này:
format.json { render :json => @comment.errors}
hoặc có lẽ đây:
format.json {render :json => { :status => :error, :message => "Could not be saved" }.to_json, :status => 400 }
và kích hoạt một số chức năng Javascript đó lặp qua (và hiển thị) bất kỳ lỗi nào.
Tôi đang sử dụng plugin đường ray REST in Place để triển khai chỉnh sửa tại chỗ. Dường như không có bất kỳ chức năng gọi lại nào để xử lý lỗi. Những lựa chọn của tôi là gì? Tôi có thể viết một số Javascript để đáp ứng với một điều kiện thất bại mà không cần hack các plugin? Tôi có phải hack plugin rest_in_place để xử lý tình trạng lỗi không? Có một plugin tốt hơn (cho Rails hoặc jQuery) xử lý chỉnh sửa tại chỗ, bao gồm cả điều kiện thất bại không?
CẬP NHẬT
bài này từ Peter Bùi Standard JSON Response for Rails and jQuery là hữu ích trong việc cho thấy làm thế nào để xử lý một thông báo lỗi từ máy chủ sử dụng XMLHttpRequest.status
. Tôi đã xem xét việc triển khai blog của anh ấy bằng ajax paydro-talks. Tôi ngạc nhiên trước sự phức tạp cần thiết để xử lý một điều kiện lỗi đơn giản. Thông thường Rails có tất cả sự tốt đẹp được nướng nhưng có vẻ như lỗi máy chủ với JSON nằm ngoài phạm vi. Đó có thể là?
Tôi cũng đã xem xét số validatious-on-rails của grimen để xác thực các mô hình hợp lệ khi sử dụng XMLHttpRequest ajax. Nó không rõ ràng với tôi như thế nào tôi sẽ sử dụng nó để xử lý các trường hợp chung của một "tiết kiệm" thất bại khi xác nhận thành công.
Bạn đã bao giờ kết thúc vá jquery.rest_in_place.js để hỗ trợ kiểm chứng thực? Hay bạn đã kết thúc việc nghỉ ngơi tại chỗ? –
Tôi đã từ bỏ plugin rest_in_place Rails của janv. Tác giả thừa nhận rằng hỗ trợ cho việc xác nhận là cần thiết và mất tích. Tôi đã thử một plugin Rails khác để chỉnh sửa tại chỗ, jintastic của rubymood, nhưng không thể làm cho nó hoạt động theo cách tôi muốn. Cuối cùng, tôi đã sử dụng plugin jQuery jquery_jeditable của tuupola trực tiếp trong ứng dụng Rails của tôi (không có gem hoặc plugin Rails). Tôi tìm thấy một ví dụ thực hiện tốt (với một trợ giúp xem hữu ích) trong dự án sadhana của lperichon. –