2 Stimmen

Wie erstellt man Padrino-Match-Routen, wenn die URL Punkte enthält?

Bei Padrino, wenn ich möchte, dass eine einzelne Route mit den folgenden URLs übereinstimmt:

  • "/does/not/work/for/some.reason"
  • "/does/not/work/for/some.bizarre.reason"

Wie würde ich das machen? Das heißt, der letzte Teil der URL kann eine beliebige Anzahl von Punkten enthalten, und ich möchte, dass dies einer der Parameter ist.

Ich habe versucht, Folgendes zu tun, aber die Route würde nicht übereinstimmen

  • get '/does/not/work/for/:name' do
  • get '/does/not/work/for/*splat' do

Wenn ich jedoch die Punkte durch einen Unterstrich wie "/does/note/work/for/some_reason" ändere, funktionieren sie einwandfrei.

Außerdem, wenn ich Folgendes mache:

  • "/does/not/work/for/some.bizarre.reason/info"

dann passen sowohl

  • get '/does/not/work/for/:name/info'
  • get '/does/not/work/for/*splat/info'

fein zusammen...

Fehlt mir etwas?

0 Stimmen

Würden Sie es begrüßen, Ihren Beitrag neu zu formatieren, indem Sie den Code-Tag verwenden oder indem Sie 4 Leerzeichen am Anfang der Code-Beispiele platzieren? Der Unterschied zwischen einer beantworteten Frage oder nicht kann dadurch geholfen werden. Bitte geben Sie auch an, wie Sie wissen, ob die Route übereinstimmt oder nicht, und ob Sie eine Blockvariable mit diesen Routen verwenden oder nicht, d.h. do |name|

0 Stimmen

Verwenden Sie: map => ~? Möglicherweise versucht es, es als Erweiterung zu interpretieren. Wie wäre es mit: "/ funktioniert / aus / irgendeinem / Grund / nicht /"?

0voto

Luke Antins Punkte 1940

Verwenden eines regulären Ausdrucks

# GET /mit/regexp/es.wird.funktionieren
get %r{\A/mit/regexp/(.*)\Z} do |name|
  # name => "es.wird.funktionieren"
end

Verwenden eines benannten Parameters

Padrino wird versuchen, ein format am Ende der URL wie .json oder .html anzupassen

Das Format ist über params[:format] zugänglich, Sie müssen dies mit params[:name] verbinden

# GET /mit/benannten/param/es.funktioniert.auch.mit.einem.format
get :benannt, :map => '/mit/benannten/param/:name'
  name = "#{params[:name]}.#{params[:format]}"
  # name => "es.funktioniert.auch.mit.einem.format"
end

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X