解释在select方法rails中使用hash

时间:2012-07-23 22:51:23

标签: ruby-on-rails forms select

我在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:

  1. 我已经使用了array并且正在按照我的意愿行事。

  2. hash.invert确实在show.html.erb中显示了keys,但在new / edit.html.erb中没有显示,而且这种方式对用户来说没那么多帮助谁试图填写表格无法记住键=&gt;作为输出到达键的值。

  3. 我很好奇Rails中的select如何获取HTML namevalue attirb。我假设因为哈希已经为每个关联的value提供了key,因此rails隐含地将key's value视为HTML value表格提交时的归属。

1 个答案:

答案 0 :(得分:0)

根据文件http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html 名称和ID必须位于嵌套数组中。要从地图创建,您可以使用:

@person.position_types.map{|k,v| [k.to_s,v]}