2016-07-03 9 views
0

私はdeviseにいくつかの問題があります。私はユーザーテーブル(devise)、予定表、プロフィールテーブルを私のアプリケーションに追加しました。 1人のユーザーは、多くの予定を持ち、1つのプロファイルを持つ必要があります。現在のユーザーのユーザープロフィールは表示されません

問題は、そのユーザーのプロファイルを表示できないことです。 [GET] "/ profile/1"と一致する経路がないことを伝えます

どこが間違っているのでしょうか?

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' 

プロファイルコントローラ:

class ProfilesController < ApplicationController 
before_action :set_profile, only: [:show, :edit, :update, :destroy] 

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 

アプリケーション・コントローラ:

class ApplicationController < ActionController::Base 
protect_from_forgery with: :exception 

def after_sign_in_path_for(resource) 
    "/signedinuserprofile" 
end 
end 

セッションコントローラ:

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 

答えて

0

あなたはリソースの多いルートを使用しようとしていますが、あなたのコントローラにはshowアクションがありません。 showアクションを追加し、ユーザーをparams @ profile.idから探します。

プロファイルコントローラにはないアクションにリダイレクトされています。

+0

ありがとう – OkiGirl

関連する問題