The normal devise routes work users_sign_out_path,
edit_user_registration_path, etc
I can’t seem to route to the controller for profiles. I’d like to use
the index/show actions to display the user profile publicly.
Here is my controller setup.
class ProfilesController < ApplicationController
before_action :set_profile, only: [:show, :edit, :update, :destroy]
GET /profiles
GET /profiles.json
def index
@profiles = Profile.all
end
GET /profiles/1
GET /profiles/1.json
def show
@user = User.find(params[:id])
respond_to do |format|
format.html
format.json {render :json => @user }
end
end
GET /profiles/1/edit
def edit
end
PATCH/PUT /profiles/1
PATCH/PUT /profiles/1.json
def update
respond_to do |format|
if @profile.update(profile_params)
format.html { redirect_to @profile, notice: ‘Profile was
successfully updated.’ }
format.json { render :show, status: :ok, location: @profile }
else
format.html { render :edit }
format.json { render json: @profile.errors, status:
:unprocessable_entity }
end
end
end
DELETE /profiles/1
DELETE /profiles/1.json
def destroy
@profile.destroy
respond_to do |format|
format.html { redirect_to profiles_url, notice: ‘Profile was
successfully destroyed.’ }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between
actions.
def set_profile
@profile = Profile.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the
white list through.
def profile_params
params[:profile]
end
end
routes.rb
resources :profiles
profiles GET /profiles(.:format)
profiles#index
POST /profiles(.:format)
profiles#create
new_profile GET /profiles/new(.:format)
profiles#new
edit_profile GET /profiles/:id/edit(.:format)
profiles#edit
profile GET /profiles/:id(.:format)
profiles#show
PATCH /profiles/:id(.:format)
profiles#update
PUT /profiles/:id(.:format)
profiles#update
DELETE /profiles/:id(.:format)
profiles#destroy
It gives me a method undefined error when I use the links for the
controller. Help me figure this out please. I’m pretty sure someone has
come across this problem.