如何在 Sinatra 中生成然后重定向到生成的 link?

How to generate and then redirect to that generated link in Sinatra?

我有一些烦恼。这是我的代码:

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

在第一种方法中,我生成了一些 link,在第二种方法中,我想重定向到生成的 link。我怎么能轻松做到呢?因为我收到

Sinatra doesn’t know this ditty.

即使我将 session[:test] = @link.url 从 get 方法中移到 separate 方法中,我也会收到:

NameError: undefined local variable or method `session' for main:Object

这里有 2 个 "scopes",您正在以一种不可能的方式混合它们。

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

^^ 这是 运行 当应用程序启动时从不 重新运行 . inside 块的内容可以 运行 多次,但不是路由匹配器。

处理这个问题的方法是更改​​路由匹配器以接受 URL 参数:

get "/message/:some_var"

然后在块中引用params[:some_var]