2014-01-18 2 views
0

나는 이미 Active Admin을 모두 설치 했으므로 내보기에서 대시 보드에 대한 링크를 추가하려고했습니다.보기에서 관리 대시 보드에 연결

나는 나의 application_controller에서 current_admin_user 방법이 있습니다

def current_admin_user 
    return nil if user_signed_in? && !current_user.admin? 
    current_user 
end 

을 그리고 내보기는 다음과 같습니다

<% if current_admin_user %> 
    <li><%= link_to "Admin", admin_path %></li> 
<% end %> 

내가 오류를 받고 있어요 그러나 :

undefined local variable or method `current_admin_user' 

사람은 방법을 알고 이 문제를 해결하려면?

+0

왜 도우미에 current_admin_user 기능을 추가하지 않습니까? – Pierre

+0

죄송하지만 좀 더 구체적으로 말씀해 주시겠습니까? 나는 레일스에 익숙하지. –

+0

이 코드는 도우미에 넣는 것이 더 적절하다고 생각합니다. 내 대답은 아래를 참조하십시오. – Pierre

답변

1

대신/helpers 폴더의 application_helpers.rb 파일에 함수를 넣으십시오. 그것은 대안이 user_signed_in 경우 를 사용하는 것입니다

def current_admin_user 
    return nil if user_signed_in? && !current_user.admin? 
    current_user 
    end 

일을해야합니까? & & current_user.admin?보기에서

<% if user_signed_in? && current_user.admin? %> 
    <li><%= link_to "Admin", admins_path %></li> 
    <% end %> 
+0

이제 다음과 같은 오류가 발생합니다 : 정의되지 않은 지역 변수 또는 메소드'admin_path ' –

+0

내 생각에는 단 하나의 admin_path 대신 admins_path라고 말해야합니다. 위의 내 대답을 업데이트했습니다. – Pierre

+1

admins_path 또는 admin_path가 있다고 생각하지 않습니다. 내가 'admin_dashboard_path'를 시도한 경로를 매핑 한 후 작동했습니다. –

1

이 작동합니다 :

<% if user_signed_in? %> 
<% if current_admin_user? %> 
<li><%= link_to "Admin", admin_path %></li> 
<% end %> 
<% end %> 

그것을 시도 실패하는 경우 :

<% if user_signed_in? %> 
<% if current_user.admin? %> 
<li><%= link_to "Admin", admin_path %></li> 
<% end %> 
<% end %> 
+0

둘 다 정의되지 않은 메소드 오류가 발생합니다. –

+0

내 대답을 수정했습니다. 업데이트 된 코드를 사용해보십시오. – Aluxzi

+0

두 줄 대신 아래 my 대답과 같은 if 문을 결합 할 수 있습니다. – Pierre

2

당신이 뷰 컨트롤러 방법을 사용하려는 경우, 당신은 당신의 application_controller이 줄을 추가해야합니다

helper_method :current_admin_user 
관련 문제