Как создать, а затем перенаправить на эту сгенерированную ссылку в Синатре? - PullRequest
1 голос
/ 26 сентября 2019

У меня есть некоторые проблемы.Вот мой код:

get '/generate' do
  @link = Link.create(url: Helpers.random, message: "my new ffffff")
  session[:test] = @link.url
  redirect ("/message/#{session[:test]}")
end

get "/message/#{session[:test]}" do
  erb :buttons
end

В первом методе я генерирую какую-то ссылку, а во втором я хочу перенаправить на эту сгенерированную ссылку.Как я мог сделать это легко?Потому что я получаю

Синатра не знает эту песню.

Даже если я заберу сеанс [: test] = @ link.url из метода get в отдельный метод я получаю:

NameError: неопределенная локальная переменная или метод `session 'для main: Object

1 Ответ

1 голос
/ 26 сентября 2019

Здесь есть 2 "области видимости", и вы смешиваете их таким образом, что это невозможно.

get "/message/#{session[:test]}" do

^^ это запускается , когда приложение запускается , оно никогда не запускается повторно.Содержимое внутри блока может быть запущено несколько раз, но не сопоставитель маршрутов.

Способ справиться с этим состоит в том, чтобы изменить средство сопоставления маршрутов для принятия параметра URL:

get "/message/:some_var"

Затем в блоке см. params[:some_var].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...