0

J'ai défini la méthode initialize pour mon ApplicationController pour définir la localisation. Il ressemble à ça:

def initialize 
    I18n.available_locales = [:pl,:en] 
    I18n.locale = :pl 
end 

Malheureusement, il provoque une erreur dans mon navigateur:

Uncaught ReferenceError: $ is not defined

Il CSS problèmes êtes les aussi. Comment devrais-je me connecter au processus d'initialisation pour éviter ces problèmes étranges?

// modifier page fonctionne correctement (avec le travail JQuery) lorsque je supprime mon initialize déclaration de méthode, de sorte que le problème n'est pas lui-même JQuery.

Répondre

2

Ne définissez aucun initialiseur dans vos contrôleurs. La bonne façon de définir le contexte de la demande est via before_action callbacks.

class ApplicationController 

    before_action :set_default_locale 

    private 

    def set_default_locale 
    I18n.available_locales = [:pl,:en] 
    I18n.locale = :pl 
    # or whatever it is you need to do 
    end 
end 
+0

ok, merci, ça marche :) pourriez-vous peut-être expliquer ce qui se passait exactement dans mon cas étrange et pourquoi? (juste par curiosité) –

+1

@KarolSelak: voir https://stackoverflow.com/q/18576150/125816, par exemple. Ce que vous avez fait, il désactive la moitié des rails :) –

+1

En règle générale, si vous remplacez les méthodes existantes sur lesquelles une bibliothèque (dans ce cas Rails) s'appuie, n'oubliez pas d'appeler 'super'. L'approche de Sergio avec les callbacks est correcte mais vous pouvez aussi faire fonctionner votre solution en ajoutant simplement un appel à 'super' à votre méthode' initialize'. –

0

Pour résoudre les problèmes liés à jQuery, essayez de placer la balise de script jQuery à la fin de la tête HTML. Par exemple:

<head> 

    ... 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
</head>