OK, tôi đang cố gắng hiểu các phương pháp hay nhất cho các phương thức CREATE và UPDATE cho cả hai định dạng HTML và XML. Mã mặc định cho một bộ điều khiển mà trình tạo ra đường ray tạo ra là một chút không rõ ràng đối với tôi.Thực tiễn tốt nhất cho trình điều khiển RESTful Phương thức CREATE và UPDATE
Đối với CREATE phương pháp, đưa ra một tốt tiết kiệm, máy phát điện nói với "redirect_to (@whatever)" cho HTML và "render: xml => @whatever,: status =>: tạo ra,: vị trí = > @whatever "cho XML.
Với tiết kiệm rất xấu, các máy phát điện nói với "render: action => 'mới'" cho HTML và "render: xml => @ whatever.errors,: status =>: unprocessable_entity" cho XML .
Tuy nhiên, đối với phương pháp UPDATE, được đưa ra một bản cập nhật tốt, các máy phát điện nói với "redirect_to (@whatever)" cho HTML và "đầu: ok" cho XML.
Và, đưa ra một bản cập nhật xấu, các máy phát điện nói với "render: action => 'chỉnh sửa'" cho HTML và "render: xml => @ whatever.errors,: status =>: unprocessable_entity" cho XML.
Tôi hiểu điều này, và nó có ý nghĩa với tôi, và làm việc tốt - NHƯNG, tôi có hai câu hỏi:
Đầu tiên, đối với một thành công tạo và cập nhật, định dạng HTML, tại sao "redirect_to (@whatever) "thay vì" hiển thị: action => 'show' "? Tôi hiểu sự khác biệt giữa chuyển hướng và kết xuất, chỉ tò mò hơn về cách bạn có xu hướng làm điều đó và tại sao. Có vẻ như chuyển hướng sẽ là một chuyến đi bổ sung không cần thiết để trình duyệt thực hiện.
Thứ hai, tại sao "đầu: ok" khi CẬP NHẬT thành công qua XML, nhưng "render: xml => @whatever,: status =>: tạo ra,: vị trí => @whatever" khi thành công CREATE qua XML? Điều này có vẻ không phù hợp với tôi. Có vẻ như một UPDATE thành công qua XML nên giống như một CREATE thành công thông qua XML. Có vẻ như bạn sẽ cần đối tượng mới/cập nhật được trả về để bạn có thể kiểm tra nó. Làm thế nào để các bạn làm điều đó và tại sao?
Tôi đồng ý với câu trả lời của bạn cho phần thứ hai của câu hỏi của tôi. Và câu trả lời của bạn cho phần đầu tiên của câu hỏi của tôi có ý nghĩa, nhưng sau đó đặt ra một câu hỏi khác: Tại sao, sau khi tạo hoặc cập nhật không thành công, được sử dụng và không redirect_to cho cùng một lý do bạn đã đề cập? Điều gì sẽ xảy ra nếu người dùng muốn đánh dấu trang chỉnh sửa hoặc trang mới? Nếu kết xuất đã được sử dụng, thì chúng sẽ vẫn ở trên trang "/ whatevers" (sai). – Buddy
Nếu người dùng được chuyển hướng đến hành động mới/chỉnh sửa, tất cả dữ liệu POST được gửi sẽ bị mất và biểu mẫu được hiển thị sẽ trống. Bạn đúng là người dùng có thể đánh dấu trang lỗi được hiển thị và nó sẽ trỏ đến URL sai. Không có cách nào để ngăn chặn AFAIK này. – Sidane
Ồ vâng, duh. Tôi đã nghĩ không chính xác rằng bạn có thể chuyển hướng đến trang mới hoặc chỉnh sửa VÀ chuyển một @object. Tôi đã sai. Cảm ơn cho tôi đặt thẳng! – Buddy