Rails 4 -Simple表单如何保存键和显示值

我正在尝试在Rails 4中创建一个应用程序。我使用简单的表单forms。

我的模型中有一个名为“self_governance”的属性。

我编写了一个辅助方法,以便我可以定义5个级别,可以为这个属性存储,但是作为选项显示给用户(而不是数字1 .. 5)。

在我的帮手中,我有:

module PreferencesHelper def self_gov_selector [ [ 'tier 1','1'], [ 'tier 2','2'], [ 'tier 3','3'], [ 'tier 4','4'], [ 'tier 5','5'], ] end 

在我的表格中,我有:

  "Select your tier", collection: self_gov_selector %> 

然后在我的节目中,我试图弄清楚如何显示’第1层’而不是’1’。

我试过了:

   

我发现任何有效的东西。 它们都在视图中显示1而不是第1层。

我怎样才能做到这一点?

表单发布的params只包含数组中的第二个值,因此您可能将值作为整数存储在数据库表中。

一个简单的解决方案是使用enum将您存储的整数映射到它们所代表的值:

在您的偏好模型中:

 enum self_governance: { tier_1: 1, tier_2: 2, tier_3: 3, tier_4: 4, tier_5: 5 } 

然后相应地更新您的视图:

 <%= @preference.self_governance.try(:humanize) %> 

编辑:

这种方法的另一个好处是你可以直接调用enum替换你的helper方法:

 f.input :self_governance, as: :select, label: "your label", collection: Preference.self_governances.map { |key, val| [key.humanize, val] }