我的模型中有键值对,我想创建一个选项 - 从中选择。它存储“儿童”的“C”和“配偶”的“S”等。
如果有更好的方法,我愿意重构,但是我想坚持使用ABBR值,因为我是一个可怕的拼写者。
我的模特:
class Identity < ActiveRecord::Base
belongs_to :person, polymorphic: true
RELATIONSHIP = {"M" => "Member", "S" => "Spouse", "C" => "Child", "DP" => "Domestic Partner"}
end
我在表单中的目标是输出如下内容:
<select name="relationship">
<option value="M">Member</option>
<option value="S">Spouse</option>
</select>
我希望他们总是以某种顺序出现,所以我可能根本不会这样做。任何帮助将不胜感激!!!
答案 0 :(得分:1)
您可以先在控制器中反转哈希值:
@inverted_relationships = Identity::RELATIONSHIP.invert
然后,您可以使用select_tag
表单帮助程序在模板中提供这些内容:
<%= select_tag 'relationship', options_for_select(@inverted_relationships) %>
这应该产生:
<select name="relationship">
<option value="M">Member</option>
<option value="S">Spouse</option>
etc.
</select>
答案 1 :(得分:0)
在模板中尝试此操作。
select_tag 'relationship', options_for_select(@relationships.collect{ |k,v| [k, v] })
其中@relationships是您将从控制器传递给模板的哈希值,您可以使用Identity :: RELATIONSHIP.collect {| k,v | [k,v]}