Rails-REST-Ressourcen, die to_param für ein Feld verwenden, das Trennzeichen enthält

8

Ich möchte, dass meine Rails 2.3.2 App auf solche URLs antwortet und diese erzeugt:

%Vor%

In meiner config / routes.rb habe ich:

%Vor%

Ich kann dann auf Ressourcen wie:

zugreifen %Vor%

Durch die Änderung meines Website-Modells kann ich bessere URLs wie folgt erzeugen:

%Vor%

Für Domainnamen, die '.' enthalten Charaktere, Rails wird unglücklich. Ich glaube, das liegt daran, dass das "." Das Zeichen ist in ActionController :: Routing :: SEPARATORS definiert, in dem Sonderzeichen zum Aufteilen der URL aufgeführt sind. Dies ermöglicht Ihnen, Dinge wie /websites/1.xml zu tun.

SO, gibt es einen sauberen Weg, '.' Zeichen in RESTful URLs?

Ich habe versucht, ActionController :: Routing :: SEPARATORS neu zu definieren, um '.' nicht einzubeziehen, was eine völlig schlechte Möglichkeit ist, das Problem zu lösen. Dadurch werden generierte URLs durch Anhängen von ".: Format" an sie verfälscht.

Ich weiß auch, ich kann hinzufügen: Anforderungen = & gt; {: id = & gt; regexp} an meine config / routes.rb, um einen Domainnamen mit '.' (Ohne dies wird params [: id] auf den Teil des Domain-Namens vor dem ersten '.' gesetzt), aber dies hilft nicht bei der URL-Erstellung / Pfade RESTfully.

Vielen Dank :) Nick

    
nfm 04.06.2009, 06:31
quelle

3 Antworten

4

Das Problem wurde gelöst, mit einem großen Dank an Ссылка (und siehe Ссылка für zusätzliche Referenz)

Ich musste hinzufügen: anforderungen = & gt; {: website_id = & gt; regexp} für jede verschachtelte Route, die auch einen Domänennamen mit Punkten enthalten würde.

Hier ist mein Arbeitsweg:

%Vor%

Der Anruf nach

%Vor%

passt einfach zu DRY, damit: Anforderungen nicht für alle verschachtelten Routen für Websites angegeben werden müssen. So könnte ich auch

haben %Vor%     
nfm 05.06.2009, 00:03
quelle
1

Dies ist ein interessantes Thema. Ich denke nicht, dass du die schlechte '.:format' , die an das Ende angehängt wird, loswerden kannst, wenn du eine grundlegende map.resources machst. Wenn Sie Punkte in den Namen möchten, stimmen Sie nicht mit den üblichen Rails-Stilen überein, und ich denke, eine benutzerdefinierte Route könnte in Ordnung sein, wenn Sie absolut NEED das '.' in der URL.

Vielleicht sollten Sie jedoch Ihre Definition von to_param ändern. Was würden Sie über Folgendes denken?

%Vor%

Ich denke, wenn Sie damit Kunden-Websites verwalten, ist das eine ziemlich elegante Möglichkeit, nette (und SEO-freundliche) URLs wie

zu generieren %Vor%     
Oliver N. 04.06.2009 14:56
quelle
0

Ich hatte vor einiger Zeit ein ähnliches Problem und kam zu einer ähnlichen Lösung. Die Verwendung von /.+/ als Voraussetzung für den betreffenden Param hat für mich gut funktioniert.

Ссылка

    
Zargony 04.08.2010 23:39
quelle

Tags und Links