¿Cuál es el equivalente de Sinatra del método redirect_to
de Rails? Necesito seguir un flujo de publicación/redireccionamiento/obtención de un envío de formulario mientras conserva las variables de instancia que pasan a mi vista. Las variables de instancia se pierden al usar el método redirect
.¿Cómo hacer una publicación/redirigir/obtener usando Sinatra?
Respuesta
El Sinatra Book debería aclarar su pregunta. Especialmente la parte "Redirect".
Citado del libro:
La redirección realidad devuelve una cabecera Location al navegador y el navegador hace una petición de seguimiento a la ubicación indicada. Dado que el navegador realiza esa solicitud de seguimiento, puede redirigir a cualquier página, a su aplicación u a otro sitio por completo.
El flujo de solicitudes durante una redirección es: Navegador -> Servidor (redirigir a '/') -> Navegador (solicitud '/') -> Servidor (como resultado de '/')
La solución es almacenar cosas en la sesión. Todos los valores que necesita después de la redirección que están actualmente en ivars deben colocarse en la sesión. –
Hace poco hice una pregunta similar, pero todavía no he encontrado una respuesta definitiva en caso de que las cookies estén deshabilitadas en el lado del cliente ... ¿Es lo que sugiere la única solución que conoce? Alguien mas ? Gracias –
El enlace del libro de sinatra ya no está disponible. – Andres
redirección en Sinatra es el más simple de usar.
Así que el código de abajo puede explicar:
require 'rubygems'
require 'sinatra'
get '/' do
redirect "http://example.com"
end
También puede redirigir a otra ruta en su aplicación actual de este tipo, aunque esta muestra se eliminará un método.
delete '/delete_post' do
redirect '/list_posts'
end
Un lugar muy común que se utiliza esta instrucción de redirección es bajo Autenticación
def authorize!
redirect '/login' unless authorized?
end
Se puede ver más muestras en:
En cuanto a su segunda pregunta, pasar variables a puntos de vista, es posible de esta manera:
get '/pizza/:id' do
# makeing lots of pizza
@foo = Foo.find(params[:id])
erb '%h1= @foo.name'
end
Esto no responde mi pregunta. Quiero redirigir dentro de un controlador y conservar las variables de instancia, como puede hacerlo en Rails. –
Esto también en Chrome genera un POST si PUBLICAS, por lo que al actualizar la página obtienes el reenvío del formulario. – Dmitry
Sinatra Manual ya no es un enlace válido. – zhon
- 1. Cómo iniciar una aplicación Sinatra usando "correr"
- 2. ¿Cómo hacer una solicitud POST dentro del código Sinatra?
- 3. ¿Cómo puedo probar una redirección en sinatra usando rspec?
- 4. Usando Rack :: Session :: Pool with Sinatra
- 5. ¿Cómo hacer que Sinatra funcione a través de HTTPS/SSL?
- 6. Aplicación Sinatra en una gema
- 7. Pasar datos entre bloques usando sinatra
- 8. ¿Cómo accedo a parametros de Sinatra usando un símbolo?
- 9. Cómo hacer una carpeta oculta usando java
- 10. ¿Cómo hacer una consulta paginada usando ScalaQuery?
- 11. Cómo excluyo que una ruta requiera autenticación básica en Sinatra
- 12. ¿Cómo depurar una aplicación Sinatra como una aplicación Rails?
- 13. Sinatra + Bundler?
- 14. Cómo iniciar silenciosamente Sinatra + Thin?
- 15. ¿Cómo enviar una respuesta pero continuar la ejecución en Sinatra?
- 16. ¿Puedo hacer el programa Sinatra sin reiniciar el servidor?
- 17. Cómo utilizar coffeescript con Sinatra
- 18. Enviando una solicitud DELETE de Sinatra
- 19. Sinatra aplicación usando OmniAuth obtiene rack :: :: Protección SessionHijacking en IE9
- 20. Sinatra y HTTP PUT
- 21. ¿La mejor manera de guardar una respuesta en Sinatra?
- 22. ¿Para qué usa Sinatra?
- 23. ¿Cómo puedo html_escape datos de texto en una aplicación sinatra?
- 24. ¿Cómo habilitar SSL para una aplicación independiente de Sinatra?
- 25. ¿Cómo puedo darle a Sinatra una ruta predeterminada?
- 26. Cómo mezclar en rutas de Sinatra para una mejor estructura
- 27. ¿Cómo vincular un archivo Sass en una aplicación Sinatra?
- 28. ¿Cómo uso Sinatra para servir documentos XML?
- 29. Sinatra + Rack :: Test + Rspec2 - ¿Cómo usar sesiones?
- 30. Sinatra Sub-Directory Views
http://stackoverflow.com/questions/4726884/can-you-specify-the-http-method- to-use-with-sinatras-redirect – Dmitry
Es posible que desee echar un vistazo a Net :: HTTP http://stackoverflow.com/questions/10184737/how-can-i-make-a-post-request-inside- ruby-sinatra –