2016-04-01 2 views
2

Ich weiß, dass es technisch möglich ist, einen Pfad zu erstellen, der ein beliebiges Zeichen durch Constraints erlaubt. Ich habe jedoch herausgefunden, dass es unmöglich ist, eine Route zu erstellen, die einen Punkt an der Basis des Pfads aufweist, z.Wie erstellt man eine Rails Route mit einem Punkt an der Basis des Pfades?

http://localhost:5000/.well-known/acme-challenge/ 

Dies ist der Weg, den ich habe mit:

get ':my_root/acme-challenge/:id', to: 'pages#letsencrypt', constraints: {my_root: /.+/} 

Wer irgendwelche Ideen?

+0

Ich las [diese] (http://stackoverflow.com/questions/5222760/rails-rest-routing- dots-in-the-ressource-item-id), [dies] (http://stackoverflow.com/questions/5369654/why-do-routes-with-a-dot-in-a-parameter-fail-to -Spiel). Dann habe ich das gefunden [blog] (http://flip.netzbeben.de/2008/07/rails-routes-and-special-characters-like-dots/). Und getestet wie 'get '/: mein_root/acme-challenge /: id', zu: 'settings # advanced', mein_root: /.*/', und es hat funktioniert. * Segmentbeschränkungen * können geschrieben werden, ohne das Schlüsselwort 'constraint' gemäß [guide] (http://guides.rubyonrails.org/routing.html#segment-constraints) zu verwenden. –

+0

Ich lese diese Beiträge und versuchte alles, was sie skizzieren, aber es scheint nicht zu funktionieren ... – picardo

+0

und Sie haben meine Lösung auch versucht? Weil es hier funktioniert hat. –

Antwort

0

einen Blick auf dynamic-segments in blau werden Sie

standardmäßig dynamische Segmente keine Punkte akzeptieren finden - dies, weil der Punkt verwendet wird als Trennzeichen für formatiert Routen. Wenn Sie innerhalb eines dynamischen Segments einen Punkt verwenden müssen, fügen Sie eine Einschränkung hinzu, die diese - beispielsweise überschreibt. ID:/[^ /] +/erlaubt alles außer einem Schrägstrich.

können Sie versuchen,

get ':my_root/acme-challenge/:id', to: 'pages#letsencrypt', controller: /my_roo\/[^\/]+/

Ich hoffe, dass dies hilft

Verwandte Themen