我希望能夠根據查詢參數和數據庫中的數據的組合,從一個控制器動作有條件地分派到另一個控制器動作。在沒有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請求。
有沒有一個乾淨的方法來做到這一點?
編輯:賞金將去誰可以告訴我一個乾淨的方式來做到這一點,離開控制器和他們的行動相對不變(而不是重定向代碼本身)。
是啊,我已經想到了這一點爲好,儘管它不是一個非常令人興奮的選擇,從代碼組織的觀點。 – 2009-04-30 22:32:32
它實際上是好的,因爲它創造從兩個地方是容易測試 – 2013-01-22 03:39:22