So konfigurieren Sie die Rails-Routen für i18n

7

Ich bin dabei, einer Rails-App Internationalisierung hinzuzufügen, und habe mehr oder weniger dem entsprechenden Rails Guide und Railscast .

Ich habe zwei Probleme festgestellt:

  1. Wie kann ich einen "Home" -Link hinzufügen, der zum aktuellen Gebietsschema umleitet? Momentan habe ich root_path Links, aber diese sind aufgrund der Linie in routes.rb fehlgeschlagen, die entworfen wurde, um ungeschnittene Wurzeln aufzunehmen. Dies bedeutet, dass root_path immer auf das Standardgebietsschema und nicht auf das aktuelle Gebietsschema verweist.
  2. Ich habe alles eingerichtet und arbeite lokal (außer der (siehe oben), aber die Bereitstellung auf Heroku scheint alle URLs zu verlieren durch meine Routen-Datei und von einem der Catch Alls gefangen werden. Sie werden auf "/" unter dem defulat umgeleitet Gebietsschema.

Meine Einrichtung ist wie folgt

application_controller.rb

%Vor%

routes.rb

%Vor%

Mein Heimatlink:

%Vor%     
Andy Harvey 20.12.2012, 15:09
quelle

4 Antworten

9

Ich habe das schließlich nach einigem hin und her arbeiten lassen. Das Problem war, dass der Fang alle Routen a) Fang mehr als ich erwartet hatte, und b) sich scheinbar anders in Entwicklung versus Einsatz (warum sollte das sein, ich bin mir nicht sicher).

Wie auch immer, zuerst habe ich den Bereich so geändert, dass er optional ist (siehe Klammern):

%Vor%

Dies stellt sicher, dass Gültigkeitsbereiche auch dann gültig sind, wenn kein Gebietsschema festgelegt ist (dies dient vor allem der Behandlung einiger Probleme, die bei Callbacks aufgetreten sind, usw.).

Dadurch konnte ich die beiden root to -Zeilen ablegen und nur

behalten %Vor%

Ich habe die Zeile "handles / valid-locale / fake-path" gelöscht, dies verursachte Probleme mit '/' Pfaden.

Danach wurden die folgenden Catch-Alls hinter dem Scope gehalten (beachten Sie den letzten).

%Vor%

Als einen Punkt von Interesse, musste ich auch action_mailer aktualisieren, um die neuen lokalisierten URLs zu behandeln.

%Vor%

Und jetzt scheint alles zu funktionieren!

    
Andy Harvey 21.12.2012, 10:47
quelle
6

Dieser Blogpost erklärt es sehr detailliert:

Genau das, wonach ich gesucht habe, wenn nichts zu funktionieren scheint

Ссылка

%Vor%

Leitet die Standardsprache von root ab und macht auch viele andere Dinge.

    
mahatmanich 20.11.2013 15:17
quelle
5

Es gibt ein Juwel, das diese Arbeit wunderbar macht. ( Ссылка ) Du solltest folgenden Code zu deiner Gemfile hinzufügen:

%Vor%

Fügen Sie Ihrer routes.rb-Datei Folgendes hinzu:

%Vor%

Ich hoffe, es hilft ...

    
Kzu 20.12.2012 15:30
quelle
0

Sieht so aus, als könntest du den Kommentar, den ich geschrieben habe auf Railscasts als Hilfe verwenden mit Ihrem I18n Routing. Cool!

Wie bei Ihrer ersten Ausgabe können Sie root to: redirect("/#{I18n.default_locale}") einfach umleiten, um stattdessen zu I18n.locale umzuleiten?

Wie bei Ihrer zweiten Ausgabe: Haben Sie die Tests auch im Railscast-Kommentar verwendet oder haben Sie Ihre eigenen Tests, und wenn ja, haben sie bestanden? Stellt Ihnen Heroku Fehlerprotokolle zur Verfügung? (%Code%). Ich habe diese Routen nach Heroku verlegt, wo sie wie erwartet funktionieren, also denke ich, dass es eine Chance gibt, dass es kein Problem mit Heroku gibt.

    
Paul Fioravanti 21.12.2012 05:03
quelle