Sinatra应用程序中有一个代码
post '/login' do
return_url = params[:return_url] # it's nil
#........
end
网页的网址可能包含return_url
参数 - /my_app/login?return_url='blabla'
。当我尝试获取它时,它返回nil,因为post数据中没有return_url
参数。
如何访问获取params
的{{1}}?我知道我可以创建一个隐藏的字段并将其保存到它,但还有另一种方法吗?
答案 0 :(得分:2)
查询字符串被转换为GET请求的参数。由于您指的是POST请求,我假设您已经在页面上有一个表单,该表单将转换为您的sinatra post动作中的params。在这种情况下,将忽略查询字符串。
您可以按照建议在表单中添加隐藏字段。您还可以在登录前加载表单时将return_url存储在用户的会话中。它可能类似于:
enable :sessions
get '/login_form' do
session[:return_url] = 'blahblah'
end
post '/login' do
return_url = session.delete(:return_url)
# login
end