Rspec | Missing id for create controller

I am getting Id missing nil error in my create controller spec. Yet I have passed ID stuff in it still facing same everything. Here my create spec and controller file Create Spec

describe ‘POST :create’ do

context ‘with valid data’ do

let(:valid_data) { FactoryGirl.attributes_for(:student) }

it ‘redirect to show page’ do

post :create, student: valid_data

expect(response).to redirect_to(student_path(assigns[:student]))

end

end

end

Student Controller

def create

@student = current_user.students.build(student_params)

respond_to do |format|

if @student.save

format.html { redirect_to @student }

format.json { render :show, status: :created, location: @student }

else

format.html { render :new }

format.json { render json: @student.errors, status: :unprocessable_entity }

end

end

end

private

def student_params

params.require(:student).permit(:Student_Prefix, :First_Name, :Middle_Name, :Last_Name, :Father_Prefix, :Father_Name, :Father_Middle_Name, :Father_Last_Name, :Mother_Prefix, :Mother_Name, :Mother_Middle_Name, :Mother_Last_Name, :user_id)

end

Error

  1. StudentsController POST :create with valid data redirect to show page

Failure/Error: expect(response).to redirect_to(student_path(assigns[:student]))

ActionController::UrlGenerationError:

No route matches {:action=>“show”, :controller=>“students”, :id=>nil} missing required keys: [:id]

./spec/controllers/students_controller_spec.rb:38:in `block (4 levels) in <top (required)>’

-e:1:in `’

Where I am going wrong!

I am getting Id missing nil error in my create controller spec. Yet I have passed ID stuff in it still facing same everything. Here my create spec and controller file

*Create Spec*

  describe 'POST :create' do     context 'with valid data' do       let(:valid_data) { FactoryGirl.attributes_for(:student) }       it 'redirect to show page' do         post :create, student: valid_data

Looks like right here:

        expect(response).to redirect_to(student_path(assigns[:student]))

Should be `assigns(:student)`.

I tried above option but getting same error.

Any help on this. I tried so many attempts to solve it but no luck.

Thank You!

Providing a link to a reproducible test case would be a good start...