Ruby on Rails - 选择标记的模型哈希

时间:2010-11-19 16:47:06

标签: ruby-on-rails

我真的想弄清楚如何在模型中使用类别或类型哈希或数组,但我觉得我有点困惑。这是我正在尝试做的事情,我将不胜感激任何帮助。

我的应用程序中有一个警报模型,我最初有一个Alert_Type表,但想摆脱它,因为它只是我需要的查询,实际上只有高,中,低类型的警报,所以我要去将它们移入模型

  SEVERITY = { "High" => :high, 
               "Medium" => :medium,
               "Low" => :low }

<%= select :alert, :severity, Alert::SEVERITY, {:prompt => "Select one"}  %>

我觉得这是不正确的,因为当我拉数据库值时,它是高,低,中等但需要获取该值的文本。当我这样做时,

SEVERITY = {  :high => "High"
                   :medium => "Medium",
                   :low => "Low"  }

我遇到了下拉菜单问题。我正在试图找出最佳实践方法,以便在我可能需要或不需要翻译时,它可以正常工作。我应该做哈希还是只做数组。非常感谢!

1 个答案:

答案 0 :(得分:0)

select方法需要一个数组作为第3个参数,使用下一个表单:

[["field for_value_1", "field_for_name_attr_1"],
["field for_value_2", "field_for_name_attr_2"],
["field for_value_n", "field_for_name_attr_n"]]

["field for_value_and_attr_1", "field_for_value_and_attr_2","field_for_value_and_attr_n"]

哈希不应该奏效。要有一个数组,你可以做

SEVERITY = {  :high => "High"
                   :medium => "Medium",
                   :low => "Low"  }
<%= select :alert, :severity, Alert::SEVERITY.to_A, {:prompt => "Select one"}  %>

将数组传递给方法。

仅供参考,它更好的第二个选项(我的SEVERITY哈希),因为(如果你知道这个foget it :)在Ruby中,:one,:two,:三个东西是Symbol类的实例。 符号类是一种特殊的字符串:每个符号在内存中都是单例。

这个特性使得它非常适合哈希的键,因为总是:term ==:term(“Term”!=“Term”,因为有不同的实例)

对于散列中的值,它的选举(对于你的情况,最好的方法是字符串)

我希望这会有所帮助。