我一定错过了一些东西。我有一个针对短网址的控制器操作:
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] 的操作中执行代码。它将仅呈现视图。现有变量不会丢失。