2016-02-27 35 views
2

在創建新的學生即時得到錯誤「符號的隱式轉換成整數」符號的無隱式轉換成整數,嵌套形式

學生控制器,

def student_params 
    params.require(:student).permit(:name, :lastname, :subjects_attributes [:id, :name :_destroy, :mark_attributes [ :id, :value ]]) 
end 

是什麼原因導致這個問題?

回答

4

的問題是在這裏:

:subjects_attributes [:id, :name :_destroy, :mark_attributes [ :id, :value ]]) 

你應該subject_attributes後有一個冒號(:),之前不是。

可以執行任一:subject_attributes => [:id, :name, :_destroy...]subject_attributes: [:id, :name, :_destroy...]

的語法而不=>使用具有紅寶石2.0+,並且是優選的一個。

2

Bilal是正確的。 ,你必須改變:mark_attributesmark_attributes:

爲什麼?

:subjects_attributessymbol。但subjects_attributes: [ ]hash,其中key:subjects_attributes(一個symbol,事實證明),值爲[ ]

所以,強大的參數知道如何處理由subjects_attributes: [ ]定義的hash就好了。

但是後面跟着一個數組的符號,如:subjects_attributes [ ]?那麼,這會造成各種不幸,伴隨着落在地板上,腳踢,尖叫。

正如Bilal也指出的那樣,您可以通過做:subjects_attributes => [ ]回到一個幸福的地方,這也創造了散列並讓太陽再次閃耀。

,我的朋友,是「導致這個問題的原因是什麼?」的回答。