我得错过一些东西。我有一个控制器动作短网址:
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而不是重定向方法。
答案 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]的操作中的代码。它只会渲染视图。现有变量不会丢失。