使用params hash获取post请求中的params

时间:2013-02-11 14:16:38

标签: ruby sinatra rack

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}}?我知道我可以创建一个隐藏的字段并将其保存到它,但还有另一种方法吗?

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