Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用Sinatra进行发布/重定向/获取?_Ruby_Sinatra - Fatal编程技术网

Ruby 如何使用Sinatra进行发布/重定向/获取?

Ruby 如何使用Sinatra进行发布/重定向/获取?,ruby,sinatra,Ruby,Sinatra,Sinatra将Rails的重定向到方法的等价物是什么?我需要遵循表单提交的Post/Redirect/Get流,同时保留传递给视图的实例变量。使用重定向方法时,实例变量丢失。应该会清除您的问题。尤其是“”部分 引自该书: 重定向实际上会将位置头发回浏览器,浏览器会向指定的位置发出后续请求。因为浏览器发出了后续请求,所以您可以重定向到应用程序中的任何页面,或者完全重定向到另一个站点 重定向期间的请求流是:浏览器–>服务器(重定向到“/”)–>浏览器(请求“/”)–>服务器(结果为“/”) Sin

Sinatra将Rails的
重定向到
方法的等价物是什么?我需要遵循表单提交的Post/Redirect/Get流,同时保留传递给视图的实例变量。使用
重定向
方法时,实例变量丢失。

应该会清除您的问题。尤其是“”部分

引自该书:

重定向实际上会将位置头发回浏览器,浏览器会向指定的位置发出后续请求。因为浏览器发出了后续请求,所以您可以重定向到应用程序中的任何页面,或者完全重定向到另一个站点

重定向期间的请求流是:浏览器–>服务器(重定向到“/”)–>浏览器(请求“/”)–>服务器(结果为“/”)


Sinatra中的重定向是最容易使用的

因此,下面的代码可以解释:

require 'rubygems'
require 'sinatra'

get '/' do
  redirect "http://example.com"
end
您也可以像这样重定向到当前应用程序中的另一个路径,尽管此示例将删除一个方法

delete '/delete_post' do
  redirect '/list_posts'
end
使用此重定向指令的一个非常常见的地方是身份验证

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

这不能回答我的问题。我想在处理程序中重定向并保留实例变量,就像在Rails中一样。在Chrome中,这也会在您发布时生成帖子,因此在刷新页面时,您会从表单重新提交。Sinatra手册不再是有效链接。解决方案是在会话中存储内容。重定向后当前在ivars中需要的所有值都应该放在会话中。我最近问了一个类似的问题,但还没有找到一个明确的答案,以防客户端禁用cookie。。。你的建议是你知道的唯一解决方案吗?还有其他人吗?感谢sinatra图书链接不再可用。他们似乎有一些托管问题:您可能想看看Net::HTTP