10

次のような Sinatra でいくつかのメソッドを作成する必要があります。

http://:localhost:1234/add?string_to_add

しかし、次のように宣言すると:

get "/add?:string_to_add" do
...
end

string_to_addパラメータは表示されません。

メソッドを宣言し、このパラメーターを使用して機能させるにはどうすればよいですか?

4

2 に答える 2

18

URL では、疑問符がパス部分とクエリ部分を区切ります。クエリ部分は通常、名前と値のペアで構成され、多くの場合、ユーザーがフォームに入力したデータと一致するように Web ブラウザーによって構築されます。たとえば、URL は次のようになります。

http://example.com/submit?name=John&age=93

ここで、 のパス セクション/submitとクエリ セクションはname=John&age=93、キーの値「John」と の値「name93」を参照してい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_addparams ハッシュのキーに格納され、クエリ セクションは個別に解析されます。つまり、疑問符は前のd文字をオプションにします。

Sinatra でクエリ文字列の「生の」テキストを取得したい場合は、 objectのquery_stringメソッドをrequest使用できます。あなたの例では、次のようになります。

get '/add' do
  string_to_add = request.query_string
  ...
end

ルートには文字が含まれず?、 base のみが含まれることに注意してください/add

于 2013-04-03T14:53:50.127 に答える
0

次のように宣言する必要があります。

get "/add?:string_to_add?" do
...
end
于 2013-04-03T05:58:26.193 に答える