Silicon Valley Ruby on Rails Message Board › Connecting a User(devise) to their Profile Inbox x

Connecting a User(devise) to their Profile Inbox x

Jason Leo B.
user 63621822
Cambridge, MA
Post #: 1
I am using Devise and am trying to allow each User to create 1 Profile. I am able to send the the newly registered User to the page where they can create a Profile, but once the User logs out and back in it will not go to the Profile Show page.

In other words-

I can sign up a new User and send the User to the Create Profile page, then I can create a Profile with the new User(I am not sure the Profile is saving correctly)... After I log out and sign in I recieved the error:

ActiveRecord::RecordNotFound in ProfilesController#show

Couldn't find Profile without an ID


I would like the User to be sent to their Profile Show page...

Any thoughts on the issue?

The code (sorted by files) is below the link to the StackOverFlow question I posted:

http://stackoverflow....­

CODE:

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

The code (sorted by files) is below…


user.rb

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
# attr_accessible :title, :body

has_one :profile
end


--------------------------------------­-

profile.rb

class Profile < ActiveRecord::Base
attr_accessible :first_name, :last_name

belongs_to :user
end

--------------------------------------­-----



profiles_controller.rb

class ProfilesController < ApplicationController
# GET /profiles
# GET /profiles.json
def index
@profiles = Profile.all

respond_to do |format|
format.html # index.html.erb
format.json { render json: @profiles }
end
end

# GET /profiles/1
# GET /profiles/1.json
def show
@profile = Profile.find(params[:id])

respond_to do |format|
format.html # show.html.erb
format.json { render json: @profile }
end
end

# GET /profiles/new
# GET /profiles/new.json
def new
@profile = Profile.new

respond_to do |format|
format.html # new.html.erb
format.json { render json: @profile }
end
end

# GET /profiles/1/edit
def edit
@profile = Profile.find(params[:id])
end

# POST /profiles
# POST /profiles.json
def create
@profile = Profile.new(params[:profile])

respond_to do |format|
if @profile.save
format.html { redirect_to @profile, notice: 'Profile was successfully created.' }
format.json { render json: @profile, status: :created, location: @profile }
else
format.html { render action: "new" }
format.json { render json: @profile.errors, status: :unprocessable_entity }
end
end
end

# PUT /profiles/1
# PUT /profiles/1.json
def update
@profile = Profile.find(params[:id])

respond_to do |format|
if @profile.update_attributes(params[:profi­le])
format.html { redirect_to @profile, notice: 'Profile was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @profile.errors, status: :unprocessable_entity }
end
end
end

# DELETE /profiles/1
# DELETE /profiles/1.json
def destroy
@profile = Profile.find(params[:id])
@profile.destroy

respond_to do |format|
format.html { redirect_to profiles_url }
format.json { head :no_content }
end
end
end


--------------------------------------­--------



registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
protected

def after_sign_up_path_for(resource)
request.env['omniauth.origin'] || stored_location_for(resource) || new_profile_path
end


end

--------------------------------------­---

application_controller.rb

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

--------------------------------------­--



routes.rb

BaseApp::Application.routes.draw do
resources :profiles

get "users/show"

devise_for :users, :controllers => { :registrations => "registrations" }
resources :users

match '/show', to: 'profiles#show'


match '/signup', to: 'users#new'

root to: 'static_pages#home'

match '/', to: 'static_pages#home'


end

Powered by mvnForum

Our Sponsors

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy