Rails redirect_to另一个控制器方法抛出“模板丢失”

时间:2011-05-07 16:32:13

标签: ruby-on-rails ruby-on-rails-3

我得错过一些东西。我有一个控制器动作短网址:

def shorturl
   redirect_to :action => show, :id => Base58.decode(params[:id]) and return
end

我的意图是重定向或加载同一控制器的常规show方法。在这一点上,我不在乎哪种方式,只是想让它先工作。

问题是它丢失了一个模板错误,就像它没有退出shorturl方法一样。

Missing template controller/shorturl with {:locale=>[:en, :en], :formats=>[:html], :handlers=>[:rhtml, :rxml, :builder, :erb, :rjs]} 

控制台显示来自show的查询正在执行,因此它似乎正在执行重定向,但仍保留在方法内并期望视图为shorturl而不是重定向方法。

1 个答案:

答案 0 :(得分:2)

打开终端,转到项目目录并输入

   rake routes

告诉您路线文件生成的各种路径。

然后使用

重定向
redirect_to xyz_path(:id=> Base58.decode(params[:id]))
return

编辑: -

重定向和渲染是完全不同的事情。

redirect_to(:action=>’my_action’)

将向您的浏览器发送302重定向请求,结果是任何现有变量都会丢失[2],并且将执行名为“my_action”的操作。

render(:action=>’my_action’)

不会执行名为'my_action'[1]的操作中的代码。它只会渲染视图。现有变量不会丢失。