En utilisant jQuery et Ajax, lorsqu'une catégorie parente est sélectionnée, les candidats de catégorie enfant sont affichés dans un menu déroulant. Cependant, seules les catégories enfants ont été traduites uniquement dans la notation par défaut du vietnamien.
Exemple: Catégorie parent => Question Catégorie enfant => 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
La cause était que je n'ai pas transmis les paramètres régionaux au contrôleur lors de l'obtention des catégories enfants dans Ajax.
category_pulldown.js
$("#parent").on("change", function () {
  //Obtenir l'ID de la catégorie parent sélectionnée
  var id = document.getElementById("parent").value;
//Omission
$.ajax({
  type: 'GET',
  data: { parent_id: id }, //Paramètres d'ID[:parent_id]Mettre et envoyer
  url: '/categories/pulldown', //Obtenez les catégories enfants avec l'ID reçu dans le contrôleur de catégories
  dataType: 'json',
}).done(function (children) { //Traitement pour afficher la catégorie enfant acquise...
Bien qu'il s'agisse d'un extrait partiel, j'ai utilisé la méthode suivante pour obtenir les paramètres régionaux.
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
Tout d'abord, utilisez la balise d'entrée pour conserver les paramètres régionaux actuels.
Si vous écrivez type =" hidden " comme indiqué ci-dessous, il ne sera pas affiché à l'écran, même du point de vue de l'utilisateur.
hoge.html.erb
<input type="hidden" class="current_locale" value="<%= I18n.locale %>">
Puis ajoutez locale: $ ('.current_locale'). Val ()
La langue de traduction pour la catégorie parent-enfant a été unifiée.
category_pulldown.js
$("#parent").on("change", function () {
  //Obtenir l'ID de la catégorie parent sélectionnée
  var id = document.getElementById("parent").value;
//Omission
$.ajax({
  type: 'GET',
  data: { parent_id: id, locale: $('.current_locale').val() }, //Paramètres d'ID[:parent_id]Mettre et envoyer
  url: '/categories/pulldown', //Obtenez les catégories enfants avec l'ID reçu dans le contrôleur de catégories
  dataType: 'json',
}).done(function (children) { //Traitement pour afficher la catégorie enfant acquise...
HTML est pratique car les informations peuvent être transmises à la fois à partir de Ruby et de JavaScript: smiley:
Recommended Posts