2012-04-11 10 views
1

In routes.rb IRouting - warum Permalink "john.green" nicht funktioniert?

match "Mitglied/Permalink" eingerichtet haben => "Konten # profile"

, wenn die URL-Namen des Benutzers john-green ist, john_green, johngreen, alles funktioniert gut aber, wenn der uRL-Name ist john.green, so wie auf den Permalink nur den ersten Teil genommen wird - john Insbesondere aus den Rails Debug-Fenstern:

Request 

Parameters: 

{"permalink"=>"john", 
"format"=>"green"} 

Warum wird der . (Punkt) im Permalink nicht akzeptiert? Gibt es irgendeine Funktion, um das zu nutzen? EDIT, wenn ich

match "member/:permalink" => "accounts#profile", 
     :requirements  => { :permalink => /.+/ } 

verwende ich bekommen

{"requirements"=>{"permalink"=>/.+/}, 
"permalink"=>"john", 
"format"=>"green"} 

Antwort

1

standardmäßig Rails alles nach dem Punkt als Format behandelt und sieht aus wie gibt es keine einfache Möglichkeit, dieses Verhalten zu überschreiben. Aber es ist ein bisschen schmutzig Abhilfe, die :requirements Option verwendet:

match 'member/:permalink' => 'accounts#profile', 
     :constraints  => { :permalink => /.+/ } 

Durch das Hinzufügen gierig regexp für die :permalink Parameter Sie machen Rails alles geben es nach dem member/ String in dem Pfad in params[:permalink] findet.

+0

Vielen Dank für Ihre Antwort, aber leider ist der Name der URL immer noch in zwei Teile getrennt (Ich habe meinen ursprünglichen Beitrag aktualisiert) – user984621

+0

Sorry, mein Fehler. Es sollte "Einschränkungen", nicht "Anforderungen" sein. Aktualisiert und getestet die Antwort - funktioniert gut für mich auf Rails 3.2.3. –

+0

großartig, es funktioniert! Vielen Dank. – user984621

Verwandte Themen