【问题标题】:explain using of hash in select method rails解释在 select 方法 rails 中使用哈希
【发布时间】:2012-07-23 22:51:23
【问题描述】:

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

{:"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 中没有显示,并且这种方式对尝试填写的用户没有太大帮助表单无法记住键 => 值以作为输出到达键。

我只是好奇 Rails 中的 select 是如何获取 HTML namevalue attirb 的。我假设由于 hash 已经为每个关联的 key 提供了 value,因此当提交表单时,rails 会隐式地将 key's value 作为 HTML value 属性。

【问题讨论】:

    标签: ruby-on-rails forms select


    【解决方案1】:

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

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

    【讨论】:

    • 我确实将它放在了f.select 标记中的表单助手中,但它似乎不起作用。
    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多