0

我在模型中有一个定义了哈希的类。

{:"manager" => 1, :"staff" => 2}.freeze

在我的形式部分。

  <li class="field">
    <%= f.label :position_type %><br />
    <%= f.select :position_type, @person.position_types, {:include_blank => true} %>
  </li>

因此,当我按下submitshow.html.erb 中的按钮时,我只能看到所选值的值,但看不到我想要的键。

问:如何调整它以使其显示key而不是values. 我知道这与selecttag 而不是hash.

PS:

  1. 我已经使用过array,它正在做我想做的事。

  2. hash.invert它确实在 show.html.erb 中显示,keys但在 new/edit.html.erb 中没有显示,因为尝试填写表单的用户无法记住要到达的键 => 值,所以这种方式并没有太大帮助键作为输出。

我只是好奇select在 Rails 中是如何获取 HTMLnamevalueattirb 的。我假设由于hash已经value为每个关联key的 ,rails在提交表单时隐含地采用key's valueas HTML属性。value

4

1 回答 1

0

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

@person.position_types.map{|k,v| [k.to_s,v]}
于 2012-07-23T23:37:59.417 回答