2016-02-27 74 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 => [ ]回到一个幸福的地方,这也创造了散列并让太阳再次闪耀。

,我的朋友,是“导致这个问题的原因是什么?”的回答。