2017-09-28 16 views
0

我想更新表單,但提交時出現以下錯誤。Rails更新枚舉字段不是有效的

'接受' 不是一個有效的狀態

在我pdform.rb模型我有這個枚舉

enum status: { submitted: 0, approved: 1, rejected: 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

你的選項值是接受,拒絕未在枚舉地位提到

所以,要麼將它們添加枚舉

枚舉狀態:{提交:0,批准:1,拒絕:2,接受:3, 被拒:4}

變化形式選擇選項只包含那些枚舉值

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

我是個白癡...... –

+0

@TrentonTyler發生了。如果發現我的解決方案有用給予好評。謝謝 – krishnar

+1

在'enum'中添加'accepted'和'rejected'選項是正確的。雖然,其他合適的方式是將枚舉狀態設爲[:::submitted,:approved,:rejected,:accepted,:rejected] 將enum設置爲數組將自動爲其分配數組索引。您可以隨時更改訂單。 並使用'form.select:status,Model.statuses.keys.map {| u |而不是[u.titleize,u]}。我認爲它更乾淨。 – Aakanksha