Hi, I’ve added a user (devise) and a profile to my app. The problem is
that I can’t display the profile for that user. It tells me that there
is No route matches [GET] “/profile/1”
I wonder if anyone can point out where I’m going wrong, and why?
routes.rb
Rails.application.routes.draw do
devise_for :users
resources :profiles
resources :appointments
root ‘page#home’
get ‘page/testimonials’
get ‘/signedinuserprofile’ => ‘profiles#signedinuserprofile’
#get ‘page/home’
profiles controller:
class ProfilesController < ApplicationController
before_action :set_profile, only: [:show, :edit, :update, :destroy]
GET /profiles
GET /profiles.json
def index
@profiles = Profile.all
end
def signedinuserprofile
profile = Profile.find_by_user_id(current_user.id)
if profile.nil?
redirect_to “/profile/new”
else
@profile = Profile.find_by_user_id(current_user.id)
redirect_to “/profile/#{@profile.id}”
end
end
application controller:
class ApplicationController < ActionController::Base
Prevent CSRF attacks by raising an exception.
For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
def after_sign_in_path_for(resource)
“/signedinuserprofile”
end
end
sessions controller:
class SessionsController < Devise::SessionsController
#after_sign_in_path_for is called by devise
def after_sign_in_path_for(user)
“/signedinuserprofile” # here I provide the path for the user’s
profile
end
end