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 `<main>'
Where I am going wrong!
--
Cheers!
Deepak Kumar Sharma
Guru Nanak Dev Engineering College
India!
Blog: http://deekysharma.wordpress.com
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/CALDHwN5oJqMmp7d_%3DjGwt%3DNXa%2BuLqL5xfYZh0kknrD5_X94xkQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.