Подтвердить что ты не робот

Как сделать сообщение/перенаправление/получить с помощью Sinatra?

Какой эквивалент Sinatra метода Rails 'redirect_to? Мне нужно следить за потоком Post/Redirect/Get для отправки формы, сохраняя переменные экземпляра, которые передаются моему представлению. Переменные экземпляра теряются при использовании метода redirect.

4b9b3361

Ответ 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

Вы можете увидеть больше образцов:

Руководство Sinatra

FAQ

Extensions

Что касается вашего второго вопроса, передавая переменные в представления, это возможно следующим образом:

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

Ответ 2

Книга Синатры должна очистить ваш вопрос. Особенно " Redirect".

Цитата из книги:

Переадресация действительно отправляет обратно заголовок местоположения в браузер, и браузер делает последующий запрос в указанное место. Поскольку браузер выполняет этот запрос, вы можете перенаправить на любую страницу, в приложение или на другой сайт целиком.

Поток запросов во время перенаправления: Браузер → Сервер (перенаправление на /) → Браузер (запрос/) → Сервер (результат для /)