Ruby on rails RubyonRails,如何使控制器在不重定向的情况下呈现不同的页面?
假设我们有以下几页 clip/show/111 image/show/222 声音/表演/333 其中111222和333是不同贡献的ID 我开发了一个名为“show”的新控制器,它将检测ID并重定向到正确的控制器 show/show/111将重定向到clip/show/111,依此类推 我想要的是呈现页面clip/show/111而不重定向,这意味着浏览器上的URL仍将显示“show/show/111”,但实际上呈现“clip/show/111” 我怎么能这么做 谢谢大家Ruby on rails RubyonRails,如何使控制器在不重定向的情况下呈现不同的页面?,ruby-on-rails,ruby,redirect,render,Ruby On Rails,Ruby,Redirect,Render,假设我们有以下几页 clip/show/111 image/show/222 声音/表演/333 其中111222和333是不同贡献的ID 我开发了一个名为“show”的新控制器,它将检测ID并重定向到正确的控制器 show/show/111将重定向到clip/show/111,依此类推 我想要的是呈现页面clip/show/111而不重定向,这意味着浏览器上的URL仍将显示“show/show/111”,但实际上呈现“clip/show/111” 我怎么能这么做 谢谢大家 Wa'el听起来您真
Wa'el听起来您真正想做的是为一些路由创建别名,这样您就可以从不同的URL结构访问相同的功能。如果是这种情况,那么创建一个将其所有工作委托给另一个控制器的整个控制器将是一种代码味道(功能嫉妒) 您可能想做的是为“show/”定义一些额外的路由,这些路由只需重复使用相同的剪辑控制器即可。这可以通过简单地执行以下操作来实现:
# routes.rb
# ...
# For Rails 2
map.resources "show", :controller => "clip"
# For Rails 3
resources "show", :controller => "clip"
听起来你真正想做的是为你的一些路由制作别名,这样你就可以从不同的URL结构访问相同的功能。如果是这种情况,那么创建一个将其所有工作委托给另一个控制器的整个控制器将是一种代码味道(功能嫉妒) 您可能想做的是为“show/”定义一些额外的路由,这些路由只需重复使用相同的剪辑控制器即可。这可以通过简单地执行以下操作来实现:
# routes.rb
# ...
# For Rails 2
map.resources "show", :controller => "clip"
# For Rails 3
resources "show", :controller => "clip"
我还知道您说过不想重定向,但值得一提的是,Rails 3路由器允许您直接从routes.rb文件重定向。查看更多信息。我不能使用这样的资源,因为routes不知道贡献类型,如果它是clip、image等,在我的show controller中,我会进行某些查询,以了解传递的ID类型,并相应地呈现控制器/操作。另外,我知道你说你不想重定向,但值得一提的是,Rails 3路由器允许您直接从routes.rb文件重定向。查看更多信息。我不能使用这样的资源,因为routes不知道贡献类型,如果它是clip、image…等等,在我的show controller中,我会进行某些查询,以了解传递的ID类型,并相应地呈现控制器/动作。我想最后一点你搞错了。。。应该是的,谢谢克里斯,它现在变了。我想你把最后一点搞错了。。。应该是的,谢谢克里斯,它现在变了。