在创建新的学生即时得到错误“符号的隐式转换成整数”符号的无隐式转换成整数,嵌套形式
学生控制器,
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 => [ ]
回到一个幸福的地方,这也创造了散列并让太阳再次闪耀。
和那,我的朋友,是“导致这个问题的原因是什么?”的回答。