开发者

How to do a Post/Redirect/Get using Sinatra?

What's Sinatra's equivalent of Rails' redirect_to method? I need to follow a Post/R开发者_开发百科edirect/Get flow for a form submission whilst preserving the instance variables that are passed to my view. The instance variables are lost when using the redirect method.


Redirect in Sinatra is the most simple to use.

So the code below can explain:

require 'rubygems'
require 'sinatra'

get '/' do
  redirect "http://example.com"
end

You can also redirect to another path in your current application like this, though this sample will delete a method.

delete '/delete_post' do
  redirect '/list_posts'
end

A very common place where this redirect instruction is used is under Authentication

def authorize!
  redirect '/login' unless authorized?
end

You can see more samples under:

Sinatra Manual

FAQ

Extensions

As for your second question, passing variables into views, it's possible like this:

get '/pizza/:id' do
  # makeing lots of pizza
  @foo = Foo.find(params[:id])
  erb '%h1= @foo.name'
end


The Sinatra Book should clear your question. Especially the "Redirect" part.

Quoted from the book:

The redirect actually sends back a Location header to the browser, and the browser makes a followup request to the location indicated. Since the browser makes that followup request, you can redirect to any page, in your application, or another site entirely.

The flow of requests during a redirect is: Browser –> Server (redirect to ’/’) –> Browser (request ’/’) –> Server (result for ’/’)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜