2017-04-26 5 views
0

ActiveAdmin gem을 사용하고 있습니다. 메뉴에 대한 로그 아웃 링크를 추가하고 싶습니다. 그래서 ActiveAdmin을의 config 파일에 내가 쓴 :ActiveAdmin 설정 config.logout_link_path로 인해 정의되지 않은 메소드 오류가 발생합니다.

config.logout_link_path = :destroy_admin_user_session_path 

그리고 내 application_controller.rb에서 나는 방법 추가 : 다시 나는 메뉴 항목 추가 ActiveAdmin을의 설정에

def destroy_admin_user_session_path 
    session[:current_admin] = nil 
    return "/" 
    end 

그리고 :

config.namespace :admin do |admin| 
    admin.build_menu :defaut do |menu| 
     admin.add_logout_button_to_menu menu, html_options: {target: :blank} 
    end 
    end 

을 그런 다음 내 앱을 실행하지만 관리자 페이지를 방문하면 내부 오류가 발생합니다.

undefined method `destroy_admin_user_session_path' for "  <ul class=\"header-item tabs\" id=\"utility_nav\"></ul>\n":ActiveAdmin::Views::TabbedNavigation 

기호 :destroy_admin_user_session_path은 내 ApplicationController으로 전송되지 않지만, 무엇인가는 <ul class=\"header-item tabs\" id=\"utility_nav\"></ul>\n으로 표시됩니다.

왜 이런 일이 발생하며이를 수정하는 이유는 무엇입니까?

답변

2

I 의심 당신이 원하는 것은 보기 도우미가 아닌 컨트롤러 메소드입니다 (알 수있는 충분한 코드가 아니다). 이렇게하면 오류 소스로보고 된 HTML이있는 뷰에서 메소드를 사용할 수 있습니다.

destroy_admin_user_session_path 메서드를 app/helpers/application_helper.rb으로 옮긴 다음 다시 시도하십시오.

실제로 컨트롤러에 메서드를 유지하려면를 ApplicationController 클래스의 맨 위에 추가하면 메서드가 컨트롤러 및 뷰에서 사용할 수있는 도우미 메서드가됩니다.

+0

의견을 보내 주셔서 감사합니다. 그것은 나를 위해 유용합니다. – cosmozhang

+0

나는 RoR에 더 최신이지만, 나는 정말로 화를 내고있다. 그것은 모든 것을하는 방법에 대한 문서가 아닌 것 같습니다. 내가 가지고있는 것은 RoR과 ActiveAdmin의 API 뿐이다. 물론 [Ruby on Rails Guides] (http://guides.rubyonrails.org)와 [ActiveAdmin document] (https://activeadmin.info/)를 알고 있지만 대부분의 기능을 다루기에는 너무 간단합니다 (사실 나는 그들이 단지 몇 가지 기본 기능을 다루고 있다고 생각한다). 그리고 내가하고 싶은 대부분의 일에 대해 어떤 지침도 찾을 수 없습니다. 예를 들어'destroy_admin_user_session_path'를 어디에 넣어야합니까? 조언 있니? (내가 만약 물어 본다면). 감사합니다. – cosmozhang

+0

협약은 그것을 'app/helpers/application_helpers.rb', @cosmozhang에 넣도록 지시 할 것입니다. – ArtOfCode