【发布时间】:2016-10-02 21:56:32
【问题描述】:
假设我的表单中有以下用于Gate 对象的选择框:
f.select(:type_use, options_for_select([['Enter & Exit', 8],
['Only Enter', 4],
['Only Exit', 4],
['Only Enter for visitors', 2],
['Only Exit for visitors', 2]],
@gate.type_use),
{ :include_blank => '- select -' },
{ :class => 'form-control'})
这些选项永远不会改变。像 4 和 8 这样的整数代表每天的周期数,我稍后使用这些整数进行计算。但是,我仍然希望为每个整数保留正确的字符串标签以在我的视图中使用,因此我可以证明门具有“仅退出”类型的使用,例如。
那么,是否可以将选择选项保存为哈希,或者 Rails 是否有其他方法可以将整数映射到字符串以在我的应用程序中使用?
以前我一直在做的只是保存字符串值,然后使用if 语句,在进行计算之前根据字符串值手动为变量分配相应的整数。但我还没有找到一种更有效、更优雅的方式来做到这一点。
在我的研究中,我确实找到了有关 Enums 的信息,但我认为它不适用于这种情况,因为我有重复的整数,而 Enums 对我来说更像是顺序索引。此外,关于选择框中的哈希的其他问题似乎围绕着使用哈希填充 select 选项,而不是保存为哈希
【问题讨论】:
-
鉴于您说“这些选项永远不会改变”,为什么要将其存储在数据库中...我可以建议在某些初始化程序中定义一个常量吗?例如常量.rb?
-
不确定我是否完全遵循...每个
gate都会选择这 5 个选项之一。该选择需要保存。我不必同时保存字符串和整数值,这是真的。但我至少需要保存一个。 -
hstore 可能是您想要在下面做的 RE。我只是说我不明白为什么你想将字符串存储在数据库中,而你可能只是有某种常量告诉你“哦,2 意味着'只为访客输入'”,但问题是你似乎有多个 ID 映射到同一个字符串...
标签: ruby-on-rails ruby