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