Tôi muốn có thể gửi từ một hành động điều khiển sang một điều kiện khác, dựa trên sự kết hợp của các tham số truy vấn và dữ liệu trong cơ sở dữ liệu.Cách chính xác để chạy một hành động điều khiển từ một hành động điều khiển khác mà không có chuyển hướng HTTP là gì?
Những gì tôi có ngay bây giờ là cái gì đó như:
class OldController < ApplicationController
def old_controller_action
if should_use_new_controller
new_params = params.dup
new_params[:controller] = "new_controller_action"
redirect_to new_params
return
end
# rest of old and busted
end
end
class NewController < ApplicationController
def new_controller_action
# new hotness
end
end
này hoạt động tốt, nhưng mà nó tạo ra một chuyển hướng HTTP, đó là chậm. Tôi muốn có thể làm điều tương tự, nhưng trong cùng một yêu cầu HTTP.
Có cách nào để làm việc này không?
Chỉnh sửa: Tiền thưởng sẽ chuyển đến người có thể chỉ cho tôi cách làm sạch để điều khiển và hành động của họ không bị ảnh hưởng (ngoài chính mã chuyển hướng).
Vâng, tôi cũng nghĩ về điều này, mặc dù nó không phải là một lựa chọn thú vị khủng khiếp, từ góc độ tổ chức mã. –
Nó thực sự là ok vì nó tạo ra trên phương pháp gắn kết được gọi là từ hai nơi đó là dễ dàng testable –