创建新的Student Im获取错误时“没有将符号隐式转换为整数”
在学生管理员中,
def student_params
params.require(:student).permit(:name, :lastname, :subjects_attributes [:id, :name :_destroy, :mark_attributes [ :id, :value ]] )
end
导致此问题的原因是什么?
答案 0 :(得分:4)
问题在于:
:subjects_attributes [:id, :name :_destroy, :mark_attributes [ :id, :value ]] )
:
之后应该有冒号(subject_attributes
),而不是之前。
您可以执行:subject_attributes => [:id, :name, :_destroy...]
或subject_attributes: [:id, :name, :_destroy...]
没有=>
的语法与Ruby 2.0+一起使用,是首选语法。
答案 1 :(得分:2)
比拉尔是对的。 ,您必须将:mark_attributes
更改为mark_attributes:
。
为什么?
:subjects_attributes
是symbol
。但subjects_attributes: [ ]
是hash
,其中key
为:subjects_attributes
(事件结果为symbol
),值为[ ]
。
因此,强参数知道如何处理由hash
定义的subjects_attributes: [ ]
就好了。
但是一个符号跟着一个数组,比如:subjects_attributes [ ]
?好吧,这会导致各种各样的不幸,伴随着摔倒在地,踢腿和尖叫。
正如比拉尔所指出的那样,你可以通过:subjects_attributes => [ ]
回到幸福的地方,这也会产生哈希,让阳光再次闪耀。
那个,我的朋友,是问题的答案"是什么导致了这个问题?"