2011-01-17 5 views
1

쉬운 질문이 있습니다. 컨트롤러로 여러 번 호출되는 도우미 메서드를 넣을 위치는 어디입니까?
내 컨트롤러 (user_controller)를 깨끗하게 유지하고 여러 번 호출되는 도우미 메서드 (check_permits)가 이면이 메서드를 user_helper에 넣을 수 있습니까?

그렇다면 ==> user_controller에서 어떻게 불러 낼 수 있습니까? check_permits를 단순히 호출하면 인식하지 못합니다.
==> 인 경우 도우미 메서드를 넣을 위치는 어디입니까?컨트롤러가 도우미를 호출합니다.

답변

0

application_helper.rb 파일에 전역 도우미 메서드를 넣을 수 있지만 하나의 컨트롤러에서만 사용할 수있는 경우 각 컨트롤러는 자체 도우미 파일을 가질 수 있습니다. app/helper (또는 app/controller/helper)를 살펴보십시오.

4

혼란스러운 용어를 사용하고 있습니다. 레일의 컨트롤러에는 헬퍼가 없습니다. 도우미는 뷰에 대한 것으로 정의됩니다. "helper"메서드 (http://api.rubyonrails.org/classes/ActionController/Helpers/ClassMethods.html 참조)를 사용하여 컨트롤러에서 도우미 메서드를 호출 할 수는 있지만 그게 사용자가 찾고있는 것이라고 생각하지 않습니다. 일반적으로 어쨌든 좋은 생각이 아닙니다.

은 당신이 아마 원하는 것은 하나 (1) 보호 방법으로 당신의 users_controller.rb에 직접 방법을 넣어하는 것입니다

class UsersController < ApplicationController 
    ... 
    protected 
    def check_permits 
     ... 
    end 
end 
당신이 그것을 호출하는 경우

또는 (2) application_controller.rb에 넣어 여러 컨트롤러에서.

또는 (3) 모듈로 라이브러리 파일에 넣고 필요한 모든 컨트롤러에 포함시킵니다. users_controller.rb에서 다음

module CheckPermits 
    protected 
    def check_permits 
     ... 
    end 
end 

그리고 : : 예를 들어, lib 디렉토리/check_permits.rb을 만들 수 있습니다

class UsersController < ApplicationController 
    include CheckPermits 
    ... 
end 
관련 문제