Rails4、Simple Form——语言选择

Rails 4, Simple Form - language selection

我正在尝试用 Rails 4 制作一个应用程序。我使用简单的形式。

我有一个表格要求用户选择他们的工作语言。

 <%= f.input :working_languages, as: :select, collection: AVAILABLE_LANGUAGES.sort.map {|k,v| [v,k]}, label: "Select your working language" %>

我的 config/initializer 文件夹中也有一个 available_languages.rb

AVAILABLE_LANGUAGES = {
    en: "English", 
    de: "Deutsche", 
    fr: "Français", 
    es: "Español"
}

当我尝试这样做时,出现了这个错误。有谁知道是什么意思吗?

NameError in Profiles#edit
profiles/_form.html.erb where line #39 raised:

uninitialized constant ActionView::CompiledTemplates::AVAILABLE_LANGUAGES

config/initializers/language_array.rb

module LanguageArray
  AVAILABLE_LANGUAGES = {
    en: "English", 
    de: "Deutsche", 
    fr: "Français", 
    es: "Español"
}
end

并在您的表单中访问,如下所示:

<%= f.input :working_languages, as: :select, collection: LanguageArray::AVAILABLE_LANGUAGES.sort.map {|k,v| [v,k]}, label: "Select your working language" %>

更好的方法是将它放在辅助程序中 & use this for your constant(在您的视图中可用):

#config/initializers/global_constants.rb
module GlobalConstants
    # also notice the call to 'freeze'
    LANGUAGES = {
       en: "English", 
       de: "Deutsche", 
       fr: "Français", 
       es: "Español"
    }.freeze
end

#app/helpers/application_helper.rb
module ApplicationHelper
   def available_languages
       GlobalConstants::LANGUAGES
   end
end

然后您可以使用:

<%= f.collection_select :working_languages, available_languages, :first, :last, label: "Select your working language" %>