如何在整个rails应用程序中提供数据结构

时间:2015-10-30 13:06:52

标签: ruby-on-rails

现在,我有以下application_helper.rb方法:

module ApplicationHelper

  def grades_k_5
    [
      ['',],
      ['Preschool', -1],
      ['Kindergarten', 0],
      ['First grade', 1],
      ['Second grade', 2],
      ['Third grade', 3],
      ['Fourth grade', 4],
      ['Fifth grade', 5],
    ]
  end

到目前为止,我只在视图中使用它(填充下拉选择器),但现在我也想在我的一个模型中使用它。我如何将该数组放在某处,以便我可以从这个辅助方法中引用它,还有我在模型中包含的另一种方法?最终,如果我需要修改结构而不必去多种方法,那么我正在寻找的是改变这一点的地方(DRY)。

1 个答案:

答案 0 :(得分:2)

这样的静态数据存在许多选项。最简单的方法是类方法。

class StaticData
  def self.grades_k_5
    [
      ['',],
      ['Preschool', -1],
      ['Kindergarten', 0],
      ['First grade', 1],
      ['Second grade', 2],
      ['Third grade', 3],
      ['Fourth grade', 4],
      ['Fifth grade', 5],
    ]
  end
end

# then 
StaticData.grades_k_5

您还可以将其放入YAML文件中,并使用一段逻辑来解析该文件并为您提供数据。但它有点复杂,可能不需要你的情况。