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!


Cheers!

Deepak Kumar Sharma
Guru Nanak Dev Engineering College
India!

Blog: http://deekysharma.wordpress.com

On Sat, Jun 25, 2016 at 4:08 AM, Deepak S. [email protected]
wrote:

  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).

On Sat, Jun 25, 2016 at 7:01 PM, tamouse pontiki
[email protected] wrote:

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.


Cheers!

Deepak Kumar Sharma
Guru Nanak Dev Engineering College
India!

Blog: http://deekysharma.wordpress.com

On Sun, Jun 26, 2016 at 11:51 PM, Deepak S. [email protected]
wrote:

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!

On Tue, Jun 28, 2016 at 11:21 AM, Deepak S. [email protected]
wrote:

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

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


Hassan S. ------------------------ [email protected]

twitter: @hassan
Consulting Availability : Silicon Valley or remote