2012-06-07 4 views
2

초보자 문제가 더 있습니다.레일 : application_helper.rb에 정의 된 메소드가 categories_controller.rb에 의해 인식되지 않습니다.

내 응용 프로그램 도우미에서 메서드를 정의하면 전체 응용 프로그램 코드에서 사용할 수 있다는 것을 알고 있습니다. 내 applicaton 도우미에서

, 내가 가진 : 나는 오류 메시지가

if !primary_user_is_admin 
    redirect_to root_url 
end 

: 정의되지 않은 지역 변수 또는 메소드`primary_user_is_admin '

def primary_user_is_admin 

    if current_user 
    user_login_roles = JSON.parse(current_user.role) 
    if user_login_roles["admin"] 
     return 1 
    end 
    end 
    return nil 
end 

나는 categories_controller에서 호출하는 경우

primary_user_is_admin 코드를 registrations_helper.rb 파일에 넣으면 이런 일이 발생합니다.

내가 (예를 들어 뷰/사용자/edit.html.erb)보기 중 하나에 그것을 사용하는 경우

그러나,

<% if primary_user_is_admin %> 
<% end > 

는 다음 작동합니다. 내가 뭘 놓치고 있니?

+0

레일에서 컨트롤러의 도우미 메서드를 호출 할 때 [정의되지 않은 메서드]가 중복 될 수 있습니다. (http://stackoverflow.com/questions/2388932/undefined-method-when-calling-helper-method-from-controller-in -rails) –

답변

9

도우미는 기본적으로 컨트롤러에 포함되어 있지 않습니다. 할 수 있습니다

include ApplicationHelper 

ApplicationHelper 모듈의 메서드에 액세스하려면. previous discussion에는 컨트롤러의 도우미에 액세스 할 수있는 유용한 솔루션이 많이 있습니다.

+0

이니셜 라이저에 응용 프로그램 도우미를 포함시키는 방법에 대한 아이디어 : : http://stackoverflow.com/questions/23035947/rails-4-use-application-helpers-inside-initializers –

4

헬퍼에 정의 된 메서드는 기본적으로보기에서만 사용할 수 있습니다. 컨트롤러의이 메소드에 액세스하려면 응용 프로그램 컨트롤러에 'ApplicationHelper를 포함해야합니다.'

+0

에는 ApplicationHelper가 포함됩니다. – EastsideDeveloper

관련 문제