Rails - 语言选择器

Rails - language selector

我正在尝试使用 Rails 4 制作一个应用程序。我使用的是简单的表单和 bootstrap。

我正在尝试询问用户他们使用哪种语言工作。

我的配置文件中有一个属性 table 用于存储语言值。

我正在尝试按照此建议制作 select 或:interface language selector in rails form?

我发现 Simple Form 一点都不简单,并且在按照上面 link.

问题的答案中显示的示例进行操作时没有取得任何成功

在我的 profile.rb 中,我有:

def.self.language_list
    [['English', 'en'], ['French', 'fr'], ['German', 'gmh'], ['Spanish', 'spa']]
  end

在我的个人资料视图表单中,我有:

<div class="col-md-3 col-md-offset-1">
        <%= f.label  'What are your working languages?',   :class => 'question-project' %>
      </div>
      <div class="col-md-7">
      <%= f.input :languages do %>
        <%= f.select :languages, options_for_select(Profile.language_list, @profile.languages) %> 
        <% end %> 
      </div>
    <

当我尝试这个时,我收到一条错误消息:

NoMethodError at /profiles/2/edit
undefined method `language_list' for #<Class:0x007fe53323d078>

当我尝试上述 post 的答案中概述的集合 select 替代方案时,我遇到了同样的问题。

有人看到我做错了什么吗?有没有更简单的方法可以将语言列表放入表单中?

你可能需要写

def self.language_list
  [['English', 'en'], ['French', 'fr'], ['German', 'gmh'], ['Spanish', 'spa']]
end

改为

def.self.language_list
    [['English', 'en'], ['French', 'fr'], ['German', 'gmh'], ['Spanish', 'spa']]
  end

defself.language_list 之间的点是不需要的

您可以创建 app/services/i18n_support.rb


class I18nSupport
  def self.locale_names
    [
      ["English", "en"],
      ["Hindi", "hi"]
    ]
  end
end

现在您可以在您的表单中使用

I18nSupport.locale_names

全局声明方法并可自由访问不是一个好的做法。相反,您可以使用仅通过 class 访问的 class 方法