2017-12-10 4 views
1

나는 새로운 마이그레이션을 사용하여 다음과 같은 열이 다음 추가 된 : I 버튼을 보여 주려하는이 같은 작업을 수행 할 application.html.erb에서 지금사용자에게 고안하여 열을 액세스하는 방법을

class AddDetailsToUser < ActiveRecord::Migration 
    def change 
    add_column :users, :userNum, :integer 
    add_column :users, :username, :string 
    add_column :users, :fname, :string 
    add_column :users, :surname, :string 
    add_column :users, :isTeacher, :boolean, :default => false 


    end 
end 

사용자는 실제로 교사 인 경우에만 :

<% if @user.isTeacher? %> 
        <div class="buttons"> 
         <%= button_to(etc ..) %> 
        </div> 
<% end %> 

하지만 문제는 다음과 같은 오류 메시지가 얻을 수 있습니다 :

정의를 메소드`isTeacher? ' nilClass

이 문제를 해결하는 방법? 시간

+0

@SebastianPalma 나는 동일한 오류가 발생합니다! – justewe3

+0

@user가 nil이면 컨트롤러 @ 사용자가 성공적으로 설정되었는지 확인하십시오. – adcosta

+0

컨트롤러에서'@ user'의 값을 확인하십시오. 단일 사용자 객체 여야합니다. –

답변

1

고안에 대한

덕분에 사용자 장치 모델 (devise helper)로 전망 (및 컨트롤러) 액세스를 제공하는 도우미가 있습니다. 당신의 유증 모델은 다음 current_admin 관리자 인 경우 유증 모델은 사용자가 다음 current_user 경우

귀하의 경우에 당신은 current_user.isTeacher

2

고안 당신 current_your_devise_model_name라는 이름의 도우미 방법을 제공 할 수 있습니다. 귀하의 경우에는 @user 값이 없습니다. 기본적으로 if 조건을 업데이트해야합니다. 사용자가 로그인하고 선생님 인 경우이 버튼을 표시해야한다고 가정합니다. 그래서 코드

<% if current_user.present? && current_user.isTeacher? %> 
    <div class="buttons"> 
     <%= button_to(etc ..) %> 
    </div> 
<% end %> 

귀하의 코드는 사용자가 로그인되지 않은 해당 페이지에서 실행되고 동일한 레이아웃을 사용하여 의미 application.html.erb 레이아웃에 약간 변경합니다. 더 많은 사용자 로그인 방법을 사용하려면 현재 작업중인 레일 버전을 알 수 없으므로 this link을 확인해야합니다.

관련 문제