什么是Sinatra相当于Rails'redirect_to
方法?我需要按照Post / Redirect / Get流程进行表单提交,同时保留传递给我视图的实例变量。使用redirect
方法时,实例变量会丢失。
答案 0 :(得分:52)
Sinatra中的重定向是最简单易用的。
所以下面的代码可以解释:
require 'rubygems'
require 'sinatra'
get '/' do
redirect "http://example.com"
end
您也可以像这样重定向到当前应用程序中的另一个路径,但此示例将删除方法。
delete '/delete_post' do
redirect '/list_posts'
end
使用此重定向指令的一个非常常见的位置是Authentication
def authorize!
redirect '/login' unless authorized?
end
您可以在以下位置查看更多示例:
至于你的第二个问题,将变量传递给视图,可能是这样的:
get '/pizza/:id' do
# makeing lots of pizza
@foo = Foo.find(params[:id])
erb '%h1= @foo.name'
end
答案 1 :(得分:6)
Sinatra Book应该清除您的问题。特别是“Redirect”部分。
引自本书:
重定向实际上将一个Location标头发送回浏览器,浏览器向所指示的位置发出后续请求。由于浏览器发出了后续请求,因此您可以完全重定向到任何页面,应用程序或其他网站。
重定向期间的请求流程为:浏览器 - >服务器(重定向到'/') - >浏览器(请求'/') - >服务器('/'的结果)