如何在 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]
。
我有一些烦恼。这是我的代码:
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]
。