Какой эквивалент Sinatra метода Rails 'redirect_to
? Мне нужно следить за потоком Post/Redirect/Get для отправки формы, сохраняя переменные экземпляра, которые передаются моему представлению. Переменные экземпляра теряются при использовании метода redirect
.
Как сделать сообщение/перенаправление/получить с помощью Sinatra?
Ответ 1
Перенаправление в 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
Ответ 2
Книга Синатры должна очистить ваш вопрос. Особенно " Redirect".
Цитата из книги:
Переадресация действительно отправляет обратно заголовок местоположения в браузер, и браузер делает последующий запрос в указанное место. Поскольку браузер выполняет этот запрос, вы можете перенаправить на любую страницу, в приложение или на другой сайт целиком.
Поток запросов во время перенаправления: Браузер → Сервер (перенаправление на /) → Браузер (запрос/) → Сервер (результат для /)