我認爲代碼是更明確的從另一個控制器渲染控制器動作
選項甲
class RedirectController < ApplicationController
def index
redirect_to :controller => 'posts', :action => 'show', :id => 1
# it works
end
end
選擇B
class RedirectController < ApplicationController
def index
render :controller => 'posts', :action => 'show', :id => 1
# it doesn't work
end
end
是可能的(B)加載在另一個另一個動作控制器? (而不僅僅是視圖)如何? 感謝
你爲什麼要這麼做?如果你告訴我們你正在努力解決的根本問題可能會更好。 – 2010-07-30 09:38:51
「根本問題」是我想要自由地設置一些網址,只要我不想觸摸routes.rb – user142913 2010-07-30 16:50:50
只是爲了澄清,您的選項A不會呈現來自另一個控制器的操作,它會以當前的請求將瀏覽器指向另一個控制器的重定向(因此會導致第二個請求觸發另一個控制器)。 'render:template =>'posts/show'然而直接呈現另一個控制器的模板。當然你需要設置模板顯示的東西(比如你的@post var)。 我不知道我是否明白你想做什麼,但通常你不能設置url而不觸及routes.rb,因爲這就是routes.rb的好處。 – Zargony 2010-08-02 14:43:40