2012-06-03 1 views
0

devise가있는 등록/로그인 시스템을 사용하여 간단한 프로필 페이지를 만들려고합니다. 프로필 페이지에 등록, 로그인 및 리디렉션 할 수 있지만 프로필 페이지에 사용자와 관련된 변수를 삽입하려고하면 NoMethodError가 계속 실행됩니다. 나는 각 프로필 페이지가 특정 사용자 정보를 표시해야하기 때문에 current_user를 사용하여 정보를 표시하고 싶지 않습니다. 나는 이것에 대한 해결책을 사방에 수색했고, 이것이 왜 작동하지 않을지 전혀 모른다.NoMethodError 프로필 페이지에 사용자 정보를 표시하려고 시도했습니다.

index.html.erb

<p class="notice"><%= notice %></p> 
<p class="alert"><%= alert %></p> 
<div id="user_nav"> 
    <% if user_signed_in? %> 
    Signed in as <%= current_user.email %>. Not you? 
    <%= link_to "Sign out", destroy_user_session_path, :method => :delete %> 
    <% else %> 
    <%= link_to "Sign up", new_user_registration_path %> or <%= link_to "sign in", new_user_session_path %> 
    <% end %> 
</div> 

show.html.erb

<%= @user.firstname %> 
You are signed in 

사용자 컨트롤러

class UsersController < ApplicationController 
    def show 
    @user = User.find_by_username(params[:id]) 
    end 
end 

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, :username, :firstname, :lastname 
end 
: 여기에 모든 코드입니다

는 route.rb

Test1::Application.routes.draw do 
    devise_for :users 
    resources :user 
    authenticated :user do 
    root :to => 'users#show' 
    end 
    root :to => 'home#index' 
end 

오류 메시지

NoMethodError in Users#show 

Showing /Documents/Aptana Studio 3 Workspace/test1/app/views/users/show.html.erb where line #1 raised: 

undefined method `firstname' for nil:NilClass 
Extracted source (around line #1): 

1: <%= @user.firstname %> 
2: You are signed in 
Rails.root: /Documents/Aptana Studio 3 Workspace/test1 

Application Trace | Framework Trace | Full Trace 
app/views/users/show.html.erb:1:in `_app_views_users_show_html_erb___52288684_2184635920' 

답변

1

나는 그것이 있어야 확실 해요 :

@user = User.find(params[:id]) 
+0

음, 나는 당신의 대답을 overread, BTW – apneadiving

+0

죄송합니다, 나는 추측 경로 접두사가 주어지면 사용자는'current_user'를 통해 직접 액세스해야합니다. – apneadiving

+0

그 옵션을 사용하면 다음 오류가 발생합니다 : ActiveRecord :: RecordNotFound in UsersController # show ID없이 사용자를 찾을 수 없습니다. Rails.root :/Documents/Aptana Studio 3 작업 공간/test1 응용 프로그램 추적 | 프레임 워크 추적 | 전체 추적 app/controllers/users_controller.rb : 3 : 'show' – user1411453