In einer URL trennt ein Fragezeichen der path Teil aus dem query Teil. Der Abfrageteil besteht normalerweise aus Name/Wert-Paaren und wird oft von einem Webbrowser erstellt, um die Daten zu vergleichen, die ein Benutzer in ein Formular eingegeben hat. Zum Beispiel könnte eine URL wie folgt aussehen:
http://example.com/submit?name=John&age=93
Hier wird der Streckenabschnitt in /submit
, und die Abfrageabschnitte name=John&age=93
, die für die name
Taste und „93“ für die age
auf den Wert „John“ bezeichnet.
Wenn Sie create a route in Sinatra, geben Sie nur den Pfad Teil. Sinatra analysiert dann die Abfrage und stellt die darin enthaltenen Daten im Objekt params
zur Verfügung. In diesem Beispiel könnten Sie so etwas tun:
get '/submit' do
name = params[:name]
age = params[:age]
# use name and age variables
...
end
Wenn Sie ein ?
Zeichen verwenden, wenn eine Sinatra Route definieren, ist es Teil der URL optional. In dem von Ihnen verwendeten Beispiel (get "/add?:string_to_add"
) stimmt es mit einer beliebigen URL überein, die mit /ad
beginnt, dann optional mit einer weiteren d
, und dann wird alles weitere in den Schlüssel :string_to_add
des params-Hashs eingefügt, und der Abfrageabschnitt wird separat analysiert. Mit anderen Worten macht das Fragezeichen das vorangestellte d
Zeichen optional.
Wenn Sie den 'rohen' Text der Abfragezeichenfolge in Sinatra erhalten möchten, können Sie die query_string
method of the request
object verwenden. In Ihrem Beispiel, das in etwa so aussehen würde:
get '/add' do
string_to_add = request.query_string
...
end
Beachten Sie, dass die Route nicht den /add
?
Charakter, nur die Basis enthält.
Haben Sie dieses http://stackoverflow.com/questions/529065/how-to-use-params-with-slashes-with-sinatra gesehen? – Shmidt
Diese Lösung funktioniert nicht, wenn ich "?" statt '/' vor '*' – earsonheart