2012-03-15 16 views
0

因此,我正在嘗試建立用戶個人資料的鏈接!所以我有這個用戶的控制器:可以隨時重定向到用戶的配置文件。 Ruby on Rails

class UsersController < ApplicationController 

    def new 
    #defining the "@user" object for the form_for 
    @user = User.new  
    end 

    #defining a function for the "show" html file 
    def show 
    #get user id by URL address 
    @user = User.find(params[:id]) 
    end 

    #handling user login succes or failure 
    def create 
    @user = User.new(params[:user]) 
    if @user.save 

     #using "flash" variable Ruby 
     #flash[:success] = "Welcome to the Sample App!" <<< use this !! 

     #render success page 
     redirect_to @user 
    else 
     #render failure page (using error partial page) 
     render 'new' 
    end 
    end 

    #mine to show user profile 
    def show_user 

    render 'show' 

    end 
end 

,並在我的routes.rb我:

DemoApp::Application.routes.draw do 

    get "intergration_test/authentication_pages" 

    #Removed! 
    #get "users/new" 

    #ROOT page 
    root to: 'static_pages#home' 

    #My routes 
    match '/user_profile', to: 'users#show_user' 

    #REST architecture for users 
    resources :users 

    #including the Sessions action 
    resources :sessions, only: [:new, :create, :destroy] 

    match '/signup', to: 'users#new' 
    match '/signin', to: 'sessions#new' 
    #Note the use of via: :delete for the signout route, which indicated that it should be invoked using an HTTP DELETE request 
    match '/signout', to: 'sessions#destroy', via: :delete 

end 

那麼,爲什麼

#mine to show user profile 
    def show_user 

    render 'show' 

    end 

返回我的錯誤:

undefined method `email' for nil:NilClass 

它就像用戶爲空!我已經登錄了!所以我應該有一個用戶活躍。 即使我使用redirect_to @user它不起作用!幫幫我?

回答

1

我假設show模板通過@user實例變量可以訪問'user'。如果是這樣,那麼你就需要設置實例變量:

def show_user 
@user = current_user // Or other method for getting the logged in user. 
render 'show' 
end 
1

讓我們說,你是在索引頁,你想創建一個鏈接重定向到你可以使用像用戶:

<%= link_to 'Show User', current_user %> 

用戶的用戶對象,並從默認其餘的路線將帶你到顯示頁面的動作,所以沒有必要創建在您的控制器「show_user」

一個動作,可以在提供的視圖的控制器以及如何調用show_user操作

相關問題