rails + simpleform: selected 未设置为枚举值

rails + simpleform: selected does not set to be enum's value

我有一个 User 模型的枚举定义。

class User < ActiveRecord::Base
  enum program_of_study: [
    :program_of_study_unknown, :program_of_study_cs, :program_of_study_ceg,
    :program_of_study_is, :program_of_study_science,
    :program_of_study_engineering, :program_of_study_fass,
    :program_of_study_business, :program_of_study_others
  ]
end

在 simple_form 我有:

<%= simple_form_for(locals[:user], wrapper: :horizontal_form, html: {class: 'form-horizontal'},
                    url: {action: (locals[:is_new] ? 'create' : 'update')}) do |f| %>
    <%= f.error_notification %>
    <%= f.input :program_of_study, collection: User.program_of_studies, include_blank: false, selected: locals[:user].program_of_study %>
    <%= f.button :submit, class: 'btn-success' %>
<% end %>

但是,似乎虽然用户的 program_of_study'program_of_study_science'(通过检查 rails 控制台),但当我呈现表单时,显示 select 元素仍然有 'program_of_study_unknown' 作为显示的元素。正确的不是 selected。

我使用的是键而不是枚举,它似乎有效,你试过了吗:

collection: User.program_of_studies.keys

我不必指定 selected 选项。我的代码如下所示:

input :status, as: :select, collection: Venue.statuses.keys, include_blank: false

我的最终解决方案

<%= f.input :program_of_study, collection: User.program_of_studies, include_blank: false, selected: User.program_of_studies[locals[:user].program_of_study] %>