没有将符号隐式转换为整数,嵌套表单

时间:2016-02-27 15:54:50

标签: ruby-on-rails

创建新的Student Im获取错误时“没有将符号隐式转换为整数”

在学生管理员中,

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

导致此问题的原因是什么?

2 个答案:

答案 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_attributessymbol。但subjects_attributes: [ ]hash,其中key:subjects_attributes(事件结果为symbol),值为[ ]

因此,强参数知道如何处理由hash定义的subjects_attributes: [ ]就好了。

但是一个符号跟着一个数组,比如:subjects_attributes [ ]?好吧,这会导致各种各样的不幸,伴随着摔倒在地,踢腿和尖叫。

正如比拉尔所指出的那样,你可以通过:subjects_attributes => [ ]回到幸福的地方,这也会产生哈希,让阳光再次闪耀。

那个,我的朋友,是问题的答案"是什么导致了这个问题?"