ruby - 如何生成然后重定向到 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
在第一种方法中,我生成了一些链接,在第二种方法中,我想重定向到该生成的链接。我怎么能轻而易举呢?因为我收到
Sinatra 不知道这个小曲。
即使我将session[:test] = @link.url从 get 方法移到分离的方法中,我也会收到:
NameError: main:Object 的未定义局部变量或方法“会话”
解决方案
这里有 2 个“范围”,你正在以一种不可能的方式混合它们。
get "/message/#{session[:test]}" do
^^ 这是在应用程序启动时运行的,它永远不会重新运行。块内的内容可以运行多次,但不能运行路由匹配器。
处理此问题的方法是更改路由匹配器以接受 URL 参数:
get "/message/:some_var"
然后在块中参考params[:some_var]
。
推荐阅读
- python - 在python中找到一个简化数组的最小和
- javascript - 如何单击父组件中的按钮并访问子组件中的数据?
- css - Show checkbox as if unchecked when printing?
- python-2.7 - Tensorboard callback with keras fit_generator, 'Function' has no attribute 'fetch_callbacks'
- c++ - How do I turn a motor using a digital pin in the setup() function?
- python - 在 R 中运行 TensorFlow 时发现错误的 python 架构
- python - remake window after overrideredirect(True) trouble moving after resizing
- html - Http客户端无法处理css和js
- r - R:有条件地将列表项添加到以前的列表项
- spring - 带有 Postgres ltree 扩展的 Spring JPA