Tôi đã tìm kiếm xung quanh và không thể tìm được giải pháp cho loại máy móc này. Tôi muốn tải tất cả các trang bình thường trong Rails, nhưng bất cứ khi nào tôi làm một yêu cầu ajax tôi chỉ muốn trả lại trang mà không có bố trí. Vì vậy, bất cứ lúc nào tôi thực hiện một requst ajax tôi có thể thêm một ?page=true
hoặc một cái gì đó dọc theo những dòng và có Rails chỉ trả lại trang mà không cần bố trí.Rails ngăn bố cục trong khi yêu cầu AJAX
Điều này có khả thi không? Có cách nào tốt hơn để làm điều đó mà tôi đang thiếu?
Cảm ơn bạn đã trợ giúp!
chung kết Giải pháp Mã làm việc:
Trong bộ điều khiển tất cả các bạn cần làm là thêm một chút logic để các format.html
trong khối respond_to
.
Trong phương pháp show
ví dụ
def show
# code beforehand
respond_to do |format|
format.html { render :layout => !request.xhr? }
# other formats
end
end
Và đó là nó! Ngăn chặn bố cục trong các yêu cầu AJAX!
Lưu ý: Nhờ nhận xét của smathy về câu trả lời của ông, điều này đã được đơn giản hóa hơn nữa. Tôi ban đầu có format.html { render :layout => nil if request.xhr? }
Giải pháp này hoạt động tốt, nhưng sửa đổi của smathy giữ nó thậm chí còn đơn giản hơn.
Có thể thực hiện tương tự trong bộ điều khiển ứng dụng cho mọi yêu cầu ajax không? –
bản sao có thể có của [Không bao giờ hiển thị bố cục để phản hồi lại xhr] (http://stackoverflow.com/questions/2444866/never-render-a-layout-in-response-to-xhrs) – fivedigit