2016-10-25 1 views
0

세션을 기반으로 @current_user를 설정하는 user_authenticate 메소드가 있습니다. 탐색 링크가 포함 된 탐색 바 레이아웃이 있습니다. 링크 중 하나를 숨기고 사용자 ID가 8 인 경우에만 표시하려고합니다 (관리자). 이렇게 레이아웃을 썼습니다.내부에 link_to를 사용하는 경우

<div align="center" style="width: 90%"> 
<nav class="navbar navbar-inverse" role="navigation"> 
    <%= link_to "Home", '/', :class => "btn btn-default navbar-btn"%> 
    <%= link_to "Currency Master", currencies_url, :class => "btn btn-default navbar-btn"%> 
    <%= link_to "Receipts", receipts_url, :class => "btn btn-default navbar-btn"%> 
    <%= link_to "Expenses", expenses_url, :class => "btn btn-default navbar-btn"%> 
    <%= link_to "Exchange", exchanges_url, :class => "btn btn-default navbar-btn"%> 
    <% if @current_user.id == 8 %><%= link_to "Report", reports_url, :class => "btn btn-default navbar-btn" %> 
    <% end %> 
</nav> 

코드는 8입니다하지만 곧 내가 오류를 다음 얻을 링크를 클릭하는 경우에만 사용자 ID의 네비게이션 바의 "보고서"버튼을 보여주고 있음을 잘 작동합니다. 당신은 @current_user.id@current_user 경우를 확인하는

undefined method `id' for nil:NilClass 
Extracted source (around line #8): 
6 
7 
8 
9 
10 

    <%= link_to "Expenses", expenses_url, :class => "btn btn-default navbar-btn"%> 
    <%= link_to "Exchange", exchanges_url, :class => "btn btn-default navbar-btn"%> 
    <% if @current_user.id == 8 %><%= link_to "Report", reports_url, :class => "btn btn-default navbar-btn" %> 
    <% end %> 
</nav> 
+0

전체 오류 로그를 추가 할 수 있습니까? – Zero

답변

1

먼저 사용자가 ID로 관리자인지 확인하지 않아야합니다. 전에 개체 자체가 존재하는 경우, 먼저 확인할 수있는 열의 값을 확인

if @current_user.is_admin? 
# ... 

둘째 : 당신은 부울 유형의 "is_admin"열을 가지고 다음과 같이 확인할 수 있습니다. 따라서 if 조건은 다음과 같을 수 있습니다.

if @current_user && @curent_user.is_admin? 
    # show admin menu 
else 
    # show other menus 
end 
+0

당신의 솔루션을 좋아해요. 둘 이상의 관리자를 만들 수있는 옵션을 줄 것입니다. 그러나 아래처럼 시도해보십시오. – Parry

+0

하나 이상의 관리자를 만들 수있는 옵션을 제공 하겠지만 '<% 경우 @current_user && @ current_user.is_admin %><% = LINK_TO "보고서", reports_url : 클래스 => "btn을 BTN 기본 네비게이션 바-btn을"%> <% end %> ' 나는 다음과 취득을 오류 ** <사용자 : 0xd69ae08 **에 대한 정의되지 않은 메소드 is_admin ' – Parry

+0

@Parry는 지연을 유감스럽게 생각합니다. 이것은이 칼럼을 가지고 있지 않기 때문입니다. 부울 유형 – psantos

1

은 존재하지 않습니다. 그래서 그것은 오류를주고있다. ,

@current_user.present? && @current_user.id == 8

변경이 라인

<% if @current_user.id == 8 %><%= link_to "Report", reports_url, :class => "btn btn-default navbar-btn" %> 
    <% end %> 

에, ID를 확인 후 CURRENT_USER의 존재를 확인하고

우선

<% if (@current_user.present? && @current_user.id == 8) %><%= link_to "Report", reports_url, :class => "btn btn-default navbar-btn" %> 
    <% end %> 
+0

@ 패리, 너 이거 검사 해 봤니? – Sravan

관련 문제