2016-08-18 13 views
0

Rails 4.2アプリケーションでSimple_formを使用してenum属性で選択フィールドを動作させる方法がわかりません。Rails 4で簡単なフォームを使用してenum属性を選択する方法

は、ここに私のモデルである:

失敗/エラー:<% = Fここで

<h2>New Employee Registration Form</h2> 

<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
    <%= f.error_notification %> 

    <div class="form-inputs"> 
    <%= f.input :first_name, required: true, autofocus: true %> 
    <%= f.input :last_name, required: true %> 
    <%= f.input :email, required: true%> 
    <%= f.input :password, required: true, hint: ("#{@minimum_password_length} characters minimum" if @minimum_password_length) %> 
    <%= f.input :password_confirmation, required: true %> 
    <%= f.input :paypal_email, required: true%> 
    <%= f.input :mobile, required: true %> 
    <%= f.input :skype_id, required: true %> 
    <%= f.input :address, required: true %> 
    <%= f.input :province_state, required: true %> 
    <%= f.input :country, required: true %> 
    <%= f.input :postal_code, required: true %> 
    <%= f.input :bachelor_degree, required: true %> 
    <%= f.input :os, as: :select, collection: Employee.os.keys, selected: 1, required: true %> 
    <%= f.input :status, as: :select, collection: Employee.status.keys, selected: 1, required: true %> 
    </div> 

    <div class="form-actions"> 
    <%= f.button :submit, "Register New Employee" %> 
    </div> 

は私が取得していますエラーです:

class Employee < ActiveRecord::Base 
    # returns the full name of the employee. This code is found in a concern called name.rb 
    include Name 

    rolify 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 


    enum status: [:active, :vacation, :unemployed] 

    enum os: [:mac, :windows] 

    validates :first_name, 
      presence: true, 
      length: {minimum: 2} 

    validates :last_name, 
      presence: true, 
      length: {minimum: 2} 

    validates :email, email: true, presence: true, uniqueness: true 
    validates :paypal_email, email: true, presence: true, uniqueness: true 
    # validates :status, presence: true 
    validates :skype_id, presence: true, uniqueness: true 
    validates :mobile, presence: true, numericality: true, length: {minimum: 10} 
    validates :address, :province_state, :country, :postal_code, :bachelor_degree, :os, presence: true #, , , ,, :os, presence: true 

end 

はここに私のフォームです。入力:ステータス、::選択、収集:Employee.status.keys、選択:1、必須:true%>

ActionView :: Template :: Error: 未定義のメソッド `status 'は#

にあります。

奇妙なことに、似たようなフィールドの「os」と全く同じコードは完全に機能します。

この属性が原因でエラーが発生する理由を理解してください。

答えて

2

あなたはそのようにそれを行うことができます。

f.input : os, :collection => Employee.statuses.keys.to_a

あなたは、ステータスのplurializedバージョンを使用する必要があります。

+0

ありがとうSupernini。ちょうどメモ、私はto_aを使用する必要はなかったし、それは素晴らしい作品です。とても有難い。 – chell

関連する問題