0

我定义了initialize方法来为我的ApplicationController设置本地化。它看起来像:

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

不幸的是它会导致错误在我的浏览器:

Uncaught ReferenceError: $ is not defined

是有问题的CSS了。我应该如何将自己锁定到初始化过程以避免这些奇怪的问题?

//编辑 页正常工作(有工作的JQuery)当我删除我的initialize方法声明,所以这个问题是不是与jQuery本身。

回答

2

不要在控制器中定义任何初始值设定项。设置请求上下文的正确方法是通过before_action回调。

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,谢谢,它的工作:)你能解释我的奇怪情况究竟发生了什么,为什么? (只是出于好奇) –

+1

@KarolSelak:例如,请参阅https://stackoverflow.com/q/18576150/125816。你做了什么,它禁用了一半的轨道:) –

+1

一般来说,如果你重写一个库(在这种情况下,Rails)依赖的现有方法,不要忘记调用'super'。塞尔吉奥的回调方法是正确的,但你也可以通过简单地向'initialize'方法添加一个'super'调用来运行你的解决方案。 –

0

要解决jQuery的问题,请尝试将jQuery脚本标记放在HTML头部的末尾。例如:

<head> 

    ... 

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