SinatraのRailsのredirect_to
メソッドに相当するものは何ですか?ビューに渡されるインスタンス変数を保持しながら、フォーム送信のPost/Redirect/Getフローに従う必要があります。 redirect
メソッドを使用すると、インスタンス変数が失われます。
シナトラでのリダイレクトは最も簡単に使用できます。
以下のコードで説明できます:
require 'rubygems'
require 'sinatra'
get '/' do
redirect "http://example.com"
end
このサンプルはメソッドを削除しますが、このように現在のアプリケーションの別のパスにリダイレクトすることもできます。
delete '/delete_post' do
redirect '/list_posts'
end
このリダイレクト命令が使用される非常に一般的な場所は、認証の下です
def authorize!
redirect '/login' unless authorized?
end
以下のサンプルをもっと見ることができます:
2番目の質問については、変数をビューに渡すと、次のようになります。
get '/pizza/:id' do
# makeing lots of pizza
@foo = Foo.find(params[:id])
erb '%h1= @foo.name'
end
Sinatra Book で質問をクリアできます。特に「 リダイレクト 」の部分。
本から引用:
リダイレクトは実際にはLocationヘッダーをブラウザーに送り返し、ブラウザーは示された場所へのフォローアップ要求を行います。ブラウザがそのフォローアップ要求を行うため、アプリケーション内の任意のページ、または完全に別のサイトにリダイレクトできます。
リダイレクト中のリクエストのフローは、ブラウザー–>サーバー( '/'にリダイレクト)–>ブラウザー(リクエスト '/')–>サーバー( '/'の結果)です。