[RUBY] Übergeben Sie das Gebietsschema i18n an JavaScript

Beim Erstellen einer mehrsprachigen App verstopft

Wenn Sie mit jQuery und Ajax eine übergeordnete Kategorie auswählen, werden untergeordnete Kategoriekandidaten in einem Pulldown-Menü angezeigt. Es wurden jedoch nur die untergeordneten Kategorien nur in die vietnamesische Standardnotation übersetzt.

Beispiel: Übergeordnete Kategorie => Frage Kinderkategorie => 1, Ngôn ngữ và văn hóa          2,Tập huấn kỹ thuật          3,Ứng dụng và thủ tục

Ursache

Die Ursache war, dass ich das Gebietsschema nicht an den Controller übergeben habe, als ich die untergeordneten Kategorien in Ajax abgerufen habe.

category_pulldown.js


$("#parent").on("change", function () {
  //ID aus ausgewählter übergeordneter Kategorie abrufen
  var id = document.getElementById("parent").value;
//Unterlassung
$.ajax({
  type: 'GET',
  data: { parent_id: id }, //ID-Parameter[:parent_id]Setzen Sie ein und senden Sie
  url: '/categories/pulldown', //Rufen Sie untergeordnete Kategorien mit der empfangenen ID im Kategorie-Controller ab
  dataType: 'json',
}).done(function (children) { //Verarbeitung zur Anzeige der erfassten untergeordneten Kategorie...

Obwohl es sich um einen Teilauszug handelt, habe ich die folgende Methode verwendet, um das Gebietsschema abzurufen.

application_controller.rb


before_action :set_locale

  private

  def set_locale
    I18n.locale = locale
  end

  def locale
    @locale ||= params[:locale] ||= I18n.default_locale
  end

  def default_url_options(options = {})
    options.merge(locale: locale)
  end

Übergeben Sie das aktuelle Gebietsschema an Java Script

Verwenden Sie zunächst das Eingabe-Tag, um das aktuelle Gebietsschema beizubehalten. Wenn Sie "type =" hidden "" wie unten gezeigt schreiben, wird es auch aus Sicht des Benutzers nicht auf dem Bildschirm angezeigt.

hoge.html.erb


<input type="hidden" class="current_locale" value="<%= I18n.locale %>">

Fügen Sie dann locale: $ ('.current_locale'). Val () hinzu Die Übersetzungssprache für die Eltern-Kind-Kategorie wurde vereinheitlicht.

category_pulldown.js


$("#parent").on("change", function () {
  //ID aus ausgewählter übergeordneter Kategorie abrufen
  var id = document.getElementById("parent").value;
//Unterlassung
$.ajax({
  type: 'GET',
  data: { parent_id: id, locale: $('.current_locale').val() }, //ID-Parameter[:parent_id]Setzen Sie ein und senden Sie
  url: '/categories/pulldown', //Rufen Sie untergeordnete Kategorien mit der empfangenen ID im Kategorie-Controller ab
  dataType: 'json',
}).done(function (children) { //Verarbeitung zur Anzeige der erfassten untergeordneten Kategorie...

HTML ist praktisch, da Informationen sowohl von Ruby als auch von JavaScript übergeben werden können: smiley:

Recommended Posts

Übergeben Sie das Gebietsschema i18n an JavaScript
Der Weg von JavaScript nach Java
Kürzen Sie die UUID in Swift auf base64.
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
Java-Referenz zum Verständnis in der Abbildung
Java SE8 Silber ~ Der Weg zum Pass ~
So übergeben Sie den Wert an einen anderen Bildschirm
So erhalten Sie das Datum mit Java
So überprüfen Sie das Protokoll im Docker-Container
Ich habe versucht, die Sitzung in Rails zu organisieren
3 Möglichkeiten zum Importieren von Bibliotheken in Android Studio
Wenn Eclipse den Server nicht starten kann
Ich möchte APP_HOME an Logback in Gradle übergeben
Übergeben Sie mit link_to zwei Argumente an den URI
Klassenpfad hinzufügen: zu dem in spring.datasource.schema angegebenen Pfad
So erstellen Sie die einfachste Blockchain in Ruby
So überprüfen Sie Rails-Befehle im Terminal
Ich möchte den Wert in Ruby erhalten
Einbetten von JavaScript-Variablen in HTML mit Thymeleaf
Der richtige Weg, um die Tomcat-Quelle in Eclipse zu sehen
Ich war süchtig nach NoSuchMethodError in Cloud-Endpunkten
Übergeben Sie die im Java8-Lambda-Ausdruck filter () verwendeten Bedingungen als Parameter
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
Schreiben Sie ABNF in Java und geben Sie die E-Mail-Adresse weiter
Ich möchte eine TraceId in das Protokoll einbetten
Tokoro habe ich in der Migration von Wicket 7 auf 8 umgeschrieben
Es ist an der Zeit, sich dem Monster (JavaScript) in Klammern zu stellen
Verstehen Sie die Eigenschaften von Scala in 5 Minuten (Einführung in Scala)
Quelle zum Abrufen der Umleitungsquell-URL in Java
Debuggen mit Eclipse
Organisierte schrittweise Interaktion mit dem JDK
In der Abbildung verstandene Java-Klassen und -Instanzen
So geben Sie den Ressourcenpfad beim HTML-Import an
So debuggen Sie die generierte JAR-Datei mit Eclipse
[Rails] So laden Sie JavaScript in einer bestimmten Ansicht
Ich habe versucht, die Methode der gegenseitigen Teilung von Eugrid in Java zu implementieren
Denken Sie an das JAVA = JAVAscript-Problem (wird in Zukunft benötigt).
[Schienen] So zeigen Sie Bilder in der Ansicht an
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
Verwendung der Getter / Setter-Methode (in Objektorientierung)
Verwenden Sie collection_select, um die in Active_Hash gespeicherten Daten abzurufen
Verstehen Sie den groben Fluss von der Anforderung zur Antwort in SpringWebMVC
Verwendung von JSON-Daten in der WebSocket-Kommunikation (Java, JavaScript)
[Java] Ändern Sie Sprache und Gebietsschema mit JVM-Optionen in Englisch
So stellen Sie die Chronik ein, wenn sich die Zeit in CentOS7 verschiebt
[Einführung in MVEL] Mit dem Ziel, der beste MVELer der Welt zu sein
So übergeben Sie ein Objekt in MyBatis an Mapper, ohne ein Argument durchzugehen
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
So verbinden Sie die Zeichenfolgen in der Liste durch Kommas getrennt
Siehe C ++ im Android Studio-Modul (Java / Kotlin)
[Android, Java] Praktische Methode zur Berechnung der Differenz in Tagen
So erstellen Sie ein Platzhalterteil zur Verwendung in der IN-Klausel
So rufen Sie den Hashwert in einem Array in Ruby ab