在創建新的學生即時得到錯誤「符號的隱式轉換成整數」符號的無隱式轉換成整數,嵌套形式
學生控制器,
def student_params
params.require(:student).permit(:name, :lastname, :subjects_attributes [:id, :name :_destroy, :mark_attributes [ :id, :value ]])
end
是什麼原因導致這個問題?
在創建新的學生即時得到錯誤「符號的隱式轉換成整數」符號的無隱式轉換成整數,嵌套形式
學生控制器,
def student_params
params.require(:student).permit(:name, :lastname, :subjects_attributes [:id, :name :_destroy, :mark_attributes [ :id, :value ]])
end
是什麼原因導致這個問題?
的問題是在這裏:
:subjects_attributes [:id, :name :_destroy, :mark_attributes [ :id, :value ]])
你應該subject_attributes
後有一個冒號(:
),之前不是。
可以執行任一:subject_attributes => [:id, :name, :_destroy...]
或subject_attributes: [:id, :name, :_destroy...]
的語法而不=>
使用具有紅寶石2.0+,並且是優選的一個。
Bilal是正確的。 也,你必須改變:mark_attributes
爲mark_attributes:
。
爲什麼?
:subjects_attributes
是symbol
。但subjects_attributes: [ ]
是hash
,其中key
是:subjects_attributes
(一個symbol
,事實證明),值爲[ ]
。
所以,強大的參數知道如何處理由subjects_attributes: [ ]
定義的hash
就好了。
但是後面跟着一個數組的符號,如:subjects_attributes [ ]
?那麼,這會造成各種不幸,伴隨着落在地板上,腳踢,尖叫。
正如Bilal也指出的那樣,您可以通過做:subjects_attributes => [ ]
回到一個幸福的地方,這也創造了散列並讓太陽再次閃耀。
和那,我的朋友,是「導致這個問題的原因是什麼?」的回答。