Rails redirect_to另一种抛出"Template missing"的控制器方法



我一定错过了一些东西。我有一个针对短网址的控制器操作:

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 而不是重定向的方法。

打开终端,然后转到项目目录并键入

   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] 的操作中执行代码。它将仅呈现视图。现有变量不会丢失。

相关内容

最新更新