Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 工厂女孩&x2B;Rspec给出以下错误:ActionView::Template::error:(对象id)不是id值_Ruby On Rails_Ruby_Rspec_Factory Bot - Fatal编程技术网

Ruby on rails 工厂女孩&x2B;Rspec给出以下错误:ActionView::Template::error:(对象id)不是id值

Ruby on rails 工厂女孩&x2B;Rspec给出以下错误:ActionView::Template::error:(对象id)不是id值,ruby-on-rails,ruby,rspec,factory-bot,Ruby On Rails,Ruby,Rspec,Factory Bot,我定义了课程>>级别>>和“工厂女孩”步骤。步骤属于级别,级别属于课程(每一个步骤都有很多关系,反之亦然) 以下是错误(我甚至不知道从哪里开始): 以下是我所需的路线: course_level_step GET /courses/:course_id/levels/:level_id/steps/:id(.:format) steps#show 这是我的简历: describe "attempting a step" do let(:course) {

我定义了课程>>级别>>和“工厂女孩”步骤。步骤属于级别,级别属于课程(每一个步骤都有很多关系,反之亦然)

以下是错误(我甚至不知道从哪里开始):

以下是我所需的路线:

 course_level_step GET        /courses/:course_id/levels/:level_id/steps/:id(.:format) steps#show
这是我的简历:

    describe "attempting a step" do
        let(:course) { FactoryGirl.create(:course)}
        let(:level) { FactoryGirl.create(:level)}
        let(:step) { FactoryGirl.create(:step)}
        before { sign_in user}

        describe "taking a course" do
            before { visit course_level_step_path(course.id, level.id, step.id)}  <<< here is the problem

            it "should increment the user step count" do
                expect do
                    click_button "check answer"
                end.to change(user.user_steps, :count).by(1)
            end

            describe "toggling the button" do
                before { click_button "check answer"}
                it {  should have_selector('input', value: 'remove step')}
            end

        end

任何关于错误和如何解决错误的指导都将不胜感激

您的错误似乎来自视图。你能把代码和控制器也贴出来吗?也为了以后省去你更多的麻烦:这条线

before { visit course_level_step_path(course.id, level.id, step.id) } 
由于Factory Girl的工作方式,创建了一个步骤、两个级别和三个课程。您可能想将两个let子句重写到

let(:level) { FactoryGirl.create(:level, course: course) }
let(:step) { FactoryGirl.create(:step, level: level) }

您的错误似乎来自视图。你能把代码和控制器也贴出来吗?另外,为了避免以后的麻烦:由于Factory Girl的工作方式,在{Visite course\u level\u step\u path(course.id,level.id,step.id)}之前的这一行
创建了一个步骤、两个步骤和三个步骤。您可能想将两个let子句重新写入
let(:step){FactoryGirl.create(:step,level:level)}
let(:level){FactoryGirl.create(:level,course:course)}
您对let的建议-实际上解决了问题,而无需深入研究视图。我很乐意接受这个答案。然而,它发现了另一个错误,我的控制器出现了问题,如图所示:哈,我接受;-)我复制粘贴了它
before { visit course_level_step_path(course.id, level.id, step.id) } 
let(:level) { FactoryGirl.create(:level, course: course) }
let(:step) { FactoryGirl.create(:step, level: level) }