2017-09-28 5 views
0

フォームを更新しようとしていますが、送信時に次のエラーが発生しています。Rails update enum fieldsが有効ではありません

は '受け入れられた' 私はこの列挙

enum status: { submitted: 0, approved: 1, rejected: 2 } 

これは、ステータスの入力である持っている私のpdform.rbモデルに

有効な状態ではありません。列挙型の値に受け入れられた2番目の値を切り換えようとしましたが、そのときにこのエラーが発生します。

<div class="form-group row"> 
    <%= form.label :status, class: 'col-2 col-form-label' %> 
    <div class="col-md-5"> 
     <%= form.select(:status, options_for_select([['Accepted', 'accepted'], ['Declined', 'declined']]), { include_blank: true }) %> 
    </div> 
    </div> 

「1」私は0に設定されたデフォルトのステータスを持っていますが、私は、このフォームを送信するとき、それが出てくるフォームのテーブルのための私のスキーマファイルで有効なステータス

ではありませんゼロとして。ステータスを文字列に切り替えて、デフォルトを「サブミット」に設定する必要がありますか?このフォームを更新するにはどうしたらよいですか?

t.integer "status", default: 0 

答えて

0

あなたのオプション値は、受け入れある列挙状態で言及されていないの減少となりました。

したがって、いずれかの列挙に

列挙ステータスを追加:{提出:1拒否:0、承認2、受け​​入れ:3、 が減少:4}

又は

変更フォームの選択オプションが列挙しているだけで、これらの値を含むように

<%= form.select(:status, options_for_select([['Submitted', 
'submitted'],['Approved','approved'],['Rejected','rejected']]), { 
include_blank: true }) %> 
+0

イムばか.... –

+0

@TrentonTylerが発生します。私のソリューションが役に立つとわかった場合。 Upvote。ありがとう – krishnar

+1

'enum'に' accepted'と 'declined'オプションを追加するのは正しいです。しかし、他の適切な方法は です。 'enum status:[:submit、:approved、:rejected、:accepted、:declined]' 'enum'を配列として設定すると、自動的に配列インデックスが割り当てられます。注文をいつでも変更することができます。 を使用し、 'form.select:status、Model.statuses.keys.map {| u |代わりに[u.titleize、u]} 'を実行します。私はそれがずっときれいだと思う。 – Aakanksha

関連する問題