11

Tôi đang cố gắng DRY lên một bộ điều khiển bằng cách kết hợp respond_with. Khi tôi làm, theo một số hướng dẫn trong Railscast, tôi nhận được mọi thứ chủ yếu là hoạt động. Vấn đề nằm trong chuyển hướng sau khi xóa tài nguyên ... sẽ chuyển hướng đến people_url ... nhưng thay vào đó, hãy thử tải tài nguyên cụ thể.Rails 3: Cách thích hợp để Xóa tài nguyên bằng cách sử dụng respond_with

Các mẫu mã tôi thấy vẻ ngoài như thế này ... Nhưng nó vẫn thất bại cố gắng để tải các tài nguyên nó chỉ xóa:

# app/controllers/people_controller.rb 
class PeopleController < ApplicationController 
    respond_to :html, :xml 

    def destroy 
    @person = Person.find(params[:id]) 
    flash[:notice] = 'Successfully deleted person.' if @person.destroy 
    respond_with(@person) # <== spec fails here 
    end 
end 

thay đổi mà dòng cuối cùng để respond_with(@people) không hoạt động hoặc (mặc dù tôi đã hy vọng nó sẽ ...)

Sau nhiều đào bới xung quanh và cố gắng hết sức mình để hiểu những điều tôi đã có được những điều để làm việc (ít nhất là nó sẽ xuất hiện để thông số kỹ thuật thông qua ứng dụng chức năng) với điều này:..

respond_with(@person, :location => people_url) # <== now it works 

Vì vậy, đây có phải là cách chính xác để xử lý việc này không? Có vẻ như với tất cả 'ma thuật' đằng sau respond_with nó sẽ biết nó không thể chuyển hướng đến chính nó sau khi xóa? Tôi cũng đã tìm ra điều này (một trong 7 phương pháp RESTful CRUD cơ bản) sẽ khá cơ bản và thô sơ nên rất nhiều ví dụ sẽ rất nhiều ... nhưng tôi đã không thể tìm thấy nhiều ngoại trừ những cái gợi ý mã không hoạt động cho tôi.

Hy vọng một người nào đó có thể giúp tôi hiểu được 'ma thuật' của đường ray đang diễn ra ở đây nên tôi sẽ không ngạc nhiên khi điều này thổi tôi xuống đường.

Trả lời

5

Bạn đang cố gắng trả lời bằng tài nguyên đã bị xóa. Đó là vấn đề. Trong các trường hợp như xóa, phản hồi chỉ tiêu đề sẽ hoạt động. Đặt trạng thái tiêu đề yêu cầu thành :ok là đủ.

head :ok 
+2

Cảm ơn bạn nhưng, thật đáng buồn, tôi vẫn còn bối rối. bạn đang gợi ý 'respond_with (đầu: ok)'? bởi vì điều đó không hiệu quả. Tôi chỉ quen thuộc với 'format.xml {head: ok}' khi ở trong một khối 'respond_to'. vì vậy không chắc chắn làm thế nào để làm việc nó trong việc sử dụng 'respond_with' trong trường hợp này?!? – Meltemi

+0

@Meltemi - Kiểm tra ASCIICast từ Ryan Bates: http://asciicasts.com/episodes/224-controllers-in-rails-3 – dennismonsewicz

Các vấn đề liên quan