次のような Sinatra でいくつかのメソッドを作成する必要があります。
http://:localhost:1234/add?string_to_add
しかし、次のように宣言すると:
get "/add?:string_to_add" do
...
end
string_to_add
パラメータは表示されません。
メソッドを宣言し、このパラメーターを使用して機能させるにはどうすればよいですか?
URL では、疑問符がパス部分とクエリ部分を区切ります。クエリ部分は通常、名前と値のペアで構成され、多くの場合、ユーザーがフォームに入力したデータと一致するように Web ブラウザーによって構築されます。たとえば、URL は次のようになります。
http://example.com/submit?name=John&age=93
ここで、 のパス セクション/submit
とクエリ セクションはname=John&age=93
、キーの値「John」と の値「name
93」を参照していage
ます。
Sinatra でルートを作成するときは、パス部分のみを指定します。次に、Sinatra はクエリを解析し、その中のデータをparams
オブジェクトで使用できるようにします。この例では、次のようなことができます。
get '/submit' do
name = params[:name]
age = params[:age]
# use name and age variables
...
end
?
Sinatra ルートを定義するときに文字を使用すると、URL の一部がオプションになります。使用した例 ( get "/add?:string_to_add"
) では、実際には で始まるすべての URL と一致し/ad
、オプションで別d
の と一致し、その他はすべて:string_to_add
params ハッシュのキーに格納され、クエリ セクションは個別に解析されます。つまり、疑問符は前のd
文字をオプションにします。
Sinatra でクエリ文字列の「生の」テキストを取得したい場合は、 objectのquery_string
メソッドをrequest
使用できます。あなたの例では、次のようになります。
get '/add' do
string_to_add = request.query_string
...
end
ルートには文字が含まれず?
、 base のみが含まれることに注意してください/add
。
次のように宣言する必要があります。
get "/add?:string_to_add?" do
...
end