小编Vis*_*gda的帖子

RSpec - 无法获取控制器中的所有关联属性

Hello程序员和开发人员!!!,我是RoR的初学者并在rails中创建一个简单的项目来学习它的工作,所以在那个项目中我面临着编写create控制器方法规范的问题.当我试图在spec文件中传递对象的关联属性时,在控制器中它不会获得所有属性.

在文件的create方法subjects_controller.rb.
我创建了一个attr在这个变量中调用的变量,我存储了从subjects_controller_spec.rb文件发送的所有值.

attr=(params.require(:subject).permit(:name)).merge(:classroom_ids=>params[:subject][:classroom_ids],:school_ids=>params[:subject][:school_ids])
Run Code Online (Sandbox Code Playgroud)

现在,如果我在控制台中打印attrusing 的值,p attr它的输出就是我想要的确切输出,即

{"name"=>"Computer", "classroom_ids"=>["1", "2"], "school_ids"=>["1"]}
Run Code Online (Sandbox Code Playgroud)

但是,现在我正在做@subject = Subject.new(attr)和打印值@subject给出以下输出

#<Subject id: nil, name: "Computer", created_at: nil, updated_at: nil>
Run Code Online (Sandbox Code Playgroud)

并且在运行测试后,我的测试失败,然后我打印出错误,p @subject.errors它给了我以下输出

#<ActiveModel::Errors:0x007fc35444a218 @base=#<Subject id: nil, name: "Computer", created_at: nil, updated_at: nil>, @messages={:school_ids=>["is not a number"], :classroom_ids=>["is not a number"]}>
Run Code Online (Sandbox Code Playgroud)

所以,这里是我的实际问题是,为什么@subjectsubjects_controller.rb不具有价值classroom_idsschool_ids?如果有任何解决方案或建议,请帮助我解决这个问题.



下面我将为您提供所有必要的细节,以了解实际问题.

Ruby版本 2.2.4
Rails版本 4.2.0
数据库 MySQL …

ruby rspec web-applications ruby-on-rails ruby-on-rails-4

5
推荐指数
1
解决办法
240
查看次数