1

Sinatra 应用程序中有代码

post '/login' do
  return_url = params[:return_url] # it's nil
  #........
end

页面的 url 可能包含return_url参数 - /my_app/login?return_url='blabla'。当我尝试获取它时,它返回 nil,因为return_url发布数据中没有参数。

我如何访问得到paramsreturn_url?我知道我可能会创建一个隐藏字段并将其保存到其中,但是还有其他方法吗?

4

1 回答 1

2

查询字符串被转换为 GET 请求的参数。由于您指的是 POST 请求,我假设您已经在页面上有一个表单,该表单将在您的 sinatra 发布操作中转换为参数。在这种情况下,查询字符串将被忽略。

您可以按照您的建议将隐藏字段添加到表单中。当用户在登录之前加载表单时,您还可以将 return_url 存储在用户的会话中。它可能类似于:

enable :sessions

get '/login_form' do
  session[:return_url] = 'blahblah'
end

post '/login' do
  return_url = session.delete(:return_url)
  # login
end
于 2013-02-11T14:47:46.390 回答