I am using Devise and am trying to allow each user to create 1 profile
(they can currently make many). I am able to send the the newly
registered user to the page where they can create a profile, but when
the User logs in it will not go to the Profile Show page - the error
message is
(Couldn't find Profile without an ID...
app/controllers/profiles_controller.rb:16:in `show')
Have you checked that profile id is being passed in params[:id]?
How ought I check this?
I changed changed the application_controller.rb to:
class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
request.env['omniauth.origin'] || stored_location_for(resource) ||
show_path(resource.profile)
end
end
I signed up a new User and then created a Profile. After I logged out
and signed back in it gave me the error:
ActiveRecord::RecordNotFound in ProfilesController#show
We dealt with a similar problem by making sure that a profile was
created for every user at the time the user is created; we did this in
the model after failing to convince the controller to do the right thing.
In app/models/user.rb:
before_save do | user |
user.profile = Profile.new unless user.profile
end