web-dev-qa-db-fra.com

Comment faire une publication / redirection / obtenir en utilisant Sinatra?

Quel est l'équivalent de Rails pour Sinatra redirect_to méthode? J'ai besoin de suivre un flux Post/Redirect/Get pour une soumission de formulaire tout en préservant les variables d'instance qui sont passées à ma vue. Les variables d'instance sont perdues lors de l'utilisation de la méthode redirect.

27
John Topley

La redirection dans Sinatra est la plus simple à utiliser.

Ainsi, le code ci-dessous peut expliquer:

require 'rubygems'
require 'sinatra'

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

Vous pouvez également rediriger vers un autre chemin dans votre application actuelle comme celui-ci, bien que cet exemple supprime une méthode.

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

Un endroit très courant où cette instruction de redirection est utilisée est sous Authentification

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

Vous pouvez voir plus d'échantillons sous:

Manuel Sinatra

FAQ

Extensions

Quant à votre deuxième question, passer des variables dans des vues, c'est possible comme ceci:

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

Le Sinatra Book devrait effacer votre question. Surtout la partie " Redirect ".

Extrait du livre:

La redirection renvoie en fait un en-tête Location au navigateur, et le navigateur fait une demande de suivi à l'emplacement indiqué. Étant donné que le navigateur effectue cette demande de suivi, vous pouvez rediriger vers n'importe quelle page, dans votre application ou un autre site entièrement.

Le flux de requêtes pendant une redirection est: Navigateur -> Serveur (rediriger vers ‘/’) -> Navigateur (requête ’/’) -> Serveur (résultat pour ’/’)

6
daddz