Я хотел бы иметь возможность отправлять от одного действия контроллера другому, в зависимости от комбинации параметров запроса и данных в базе данных.Каков правильный способ запуска одного действия контроллера из другого действия контроллера без перенаправления HTTP?
То, что я сейчас что-то вроде:
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
Это работает просто отлично, но он выдает HTTP редирект, который медленно. Я хотел бы иметь возможность делать то же самое, но в том же HTTP-запросе.
Есть ли чистый способ сделать это?
Редактировать: Щедрость пойдет к кому-то, кто может показать мне чистый способ сделать это, что оставляет контроллеры и их действия относительно нетронутыми (кроме самого кода переадресации).
Да, я тоже об этом подумал, хотя это не очень впечатляющий вариант, с точки зрения организации кода. –
Это на самом деле нормально, поскольку он создает на связном методе, называемом из двух мест, легко проверяемых –