我认为代码是更明确的从另一个控制器渲染控制器动作
选项甲
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