【问题标题】:uninitialized constant ActionView::CompiledTemplates::未初始化的常量 ActionView::CompiledTemplates::
【发布时间】:2012-04-29 05:26:31
【问题描述】:

我是 Rails 新手,我尝试在 application.html.rb 中执行此操作:

 <%= select_tag 'set_locale',
    options_for_select(LANGUAGES, I18n.locale.to_s), :onchange => 'this.form.submit()' %>
        <%= submit_tag 'submit' %>
        <%= javascript_tag "$$('.locale input').each(Element.hide)" %>

我在 config/initializers 目录下有 i18n.rb 文件,这个文件的代码是:

#encoding: utf-8
I18n.default_locale = :en

LANGUAGES = [
  ["English",                  "en"],
  ["Espa&ntilde;ol".html_safe, "es"]]

但是当我运行时我收到了这个错误信息:

uninitialized constant ActionView::CompiledTemplates::LANGUAGES

我认为问题在于LANGUAGE,因为rails 不知道,但我不知道我能做什么。

我正在使用 ruby​​ 1.9.2 和 rails 3.0.5。

拜托,我需要帮助。

【问题讨论】:

    标签: ruby-on-rails ruby locale actionview


    【解决方案1】:

    你可以试试::LANGUAGES 吗?

    但我认为更好的做法是在应用程序助手中指定语言选择助手方法。

    在助手中:

    def languages_select_tag(name = 'set_locale')
      languages = [["English","en"],["Espa&ntilde;ol".html_safe, "es"]]
      options = options_for_select(languages, I18n.locale.to_s)
      select_tag(name, option, :onchange => 'this.form.submit()')
    end
    

    在视图中:

    <%= languages_select_tag %>
    <%= submit_tag 'submit' %>
    <%= javascript_tag "$$('.locale input').each(Element.hide)" %>
    

    【讨论】:

    • 嗨,我的朋友 Retro,非常感谢您的帮助,您的代码工作正常,我知道常量必须在类和模块中,但我从书中获取了该代码:Agile Web Development with Rails 4 edition 我不认为这是作者的错误,你怎么看?再次感谢
    【解决方案2】:

    我遇到了同样的问题。我通过添加来修复它

    def languages
      LANGUANGES
    end
    

    在 i18n.rb 文件中。 然后使用它

    options_for_select(languages, I18n.locale.to_s)
    

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      相关资源
      最近更新 更多