我真的想弄清楚如何在模型中使用类别或类型哈希或数组,但我觉得我有点困惑。这是我正在尝试做的事情,我将不胜感激任何帮助。
我的应用程序中有一个警报模型,我最初有一个Alert_Type表,但想摆脱它,因为它只是我需要的查询,实际上只有高,中,低类型的警报,所以我要去将它们移入模型
SEVERITY = { "High" => :high,
"Medium" => :medium,
"Low" => :low }
<%= select :alert, :severity, Alert::SEVERITY, {:prompt => "Select one"} %>
我觉得这是不正确的,因为当我拉数据库值时,它是高,低,中等但需要获取该值的文本。当我这样做时,
SEVERITY = { :high => "High"
:medium => "Medium",
:low => "Low" }
我遇到了下拉菜单问题。我正在试图找出最佳实践方法,以便在我可能需要或不需要翻译时,它可以正常工作。我应该做哈希还是只做数组。非常感谢!
答案 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”,因为有不同的实例)
对于散列中的值,它的选举(对于你的情况,最好的方法是字符串)
我希望这会有所帮助。