1

Sinatraアプリケーションにコードがあります

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

ページのURLにreturn_urlパラメータ-が含まれている場合があります/my_app/login?return_url='blabla'。取得しようとすると、return_url投稿データにパラメータがないため、nilが返されます。

params取得するにはどうすればよいreturn_urlですか?非表示のフィールドを作成して保存する可能性があることはわかっていますが、別の方法はありますか?

4

1 に答える 1

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
于 2013-02-11T14:47:46.390 に答える