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] }