我在Model中有一个定义了散列的类。
{:"manager" => 1, :"staff" => 2}.freeze
以我的形式部分。
<li class="field">
<%= f.label :position_type %><br />
<%= f.select :position_type, @person.position_types, {:include_blank => true} %>
</li>
所以,当我按下show.html.erb中的submit
按钮时,我只能看到所选值的值,但不能看到我打算拥有的键。
问:我如何调整它以便显示key
而不是values
。我知道它与select
代码而非hash
有很大关系。
PS:
我已经使用了array
并且正在按照我的意愿行事。
hash.invert
确实在show.html.erb中显示了keys
,但在new / edit.html.erb中没有显示,而且这种方式对用户来说没那么多帮助谁试图填写表格无法记住键=&gt;作为输出到达键的值。
我很好奇Rails中的select
如何获取HTML name
和value
attirb。我假设因为哈希已经为每个关联的value
提供了key
,因此rails隐含地将key's
value
视为HTML value
表格提交时的归属。
答案 0 :(得分:0)
根据文件http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html 名称和ID必须位于嵌套数组中。要从地图创建,您可以使用:
@person.position_types.map{|k,v| [k.to_s,v]}