Ruby on rails RubyonRails-Select标记的模型哈希

Ruby on rails RubyonRails-Select标记的模型哈希,ruby-on-rails,Ruby On Rails,我真的很想弄清楚如何在模型中使用类别或类型哈希或数组,但我觉得有点困惑。这是我正在努力做的,我将感谢任何帮助 我在我的应用程序中有一个警报模型,我最初有一个警报类型表,但我想去掉它,因为它的查询比我真正需要的高、中、低警报类型的查询要多,所以我打算将它们移动到模型中 SEVERITY = { "High" => :high, "Medium" => :medium, "Low" => :low } <%=

我真的很想弄清楚如何在模型中使用类别或类型哈希或数组,但我觉得有点困惑。这是我正在努力做的,我将感谢任何帮助

我在我的应用程序中有一个警报模型,我最初有一个警报类型表,但我想去掉它,因为它的查询比我真正需要的高、中、低警报类型的查询要多,所以我打算将它们移动到模型中

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

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

我对下拉列表有问题。我正试图找出最佳实践方法,这样当我可能需要或不需要翻译时,它就能正常工作。我应该做散列还是数组。非常感谢

select方法需要一个数组作为第三个参数,其形式如下:

[["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"]]

散列不应该起作用。创建一个数组

SEVERITY = {  :high => "High"
                   :medium => "Medium",
                   :low => "Low"  }
<%= select :alert, :severity, Alert::SEVERITY.to_A, {:prompt => "Select one"}  %>
SEVERITY={:high=>“high”
:medium=>“medium”,
:low=>“low”}
“选择一个”}%>
并将一个数组传递给该方法

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

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

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


我希望这能有所帮助。

谢谢你的建议,我认为这很有意义。在您响应之前,我在代码中这样实现了它。请先尝试一下,然后在查看Alert::SEVERITY[Alert.SEVERITY.to_sym]中查找它。我不理解您,抱歉:(.是否需要从视图中访问Alert::SEVERITY?使用cattr_reader或在模型中创建一个类方法:def self.SEVERITY;Alert::SEVERITY;end,您可以在视图Alert.SEVERITY中输入
["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"}  %>