2016-01-25 74 views
0

我有一個用戶模型的枚舉定義。rails + simpleform:selected沒有設置爲enum的值

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'(在軌控制檯檢查),當我呈現的形式,所示選擇元素仍然有'program_of_study_unknown'作爲顯示的。沒有選擇正確的一個。

回答

0

我的最終解決方案

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

取而代之的是枚舉的我用的鑰匙,它似乎工作,你有沒有嘗試過:

collection: User.program_of_studies.keys 

我沒有指定selected選項。我的代碼如下所示:

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

所以,如果我沒有得到它錯誤,張貼的「價值」會像「program_of_study_cs」? –

+0

是和枚舉的工作方式,該有效應該工作。你試過了嗎? – Leito