[RUBY-ON-RAILS] 왜 모든 레일 헬퍼 모두가, 모든 뷰에 사용할 수있는 시간인가? 이 해제하는 방법이 있나요?
RUBY-ON-RAILS왜 모든 레일 헬퍼 모두가, 모든 뷰에 사용할 수있는 시간인가? 이 해제하는 방법이 있나요?
이유는 다른 컨트롤러의 뷰에서 하나의 컨트롤러를위한 도우미 메서드에 액세스 할 수 있습니까? 해킹 / 레일을 패치하지 않고 비활성화 할 수있는 방법이 있나요?
해결법
-
==============================
1.@George 슈라이버의 방법은 레일 3.1대로 작동하지 않습니다; 코드는 크게 변경되었습니다.
@George 슈라이버의 방법은 레일 3.1대로 작동하지 않습니다; 코드는 크게 변경되었습니다.
그러나 지금은 레일 3.1 (잘하면 이상)에서이 기능을 해제 할 수있는 더 나은 방법이 있습니다. 당신의 설정 / application.rb,이 줄을 추가합니다 :
config.action_controller.include_all_helpers = false
이것은 헬퍼의 모든로드에서와 ApplicationController을 방지 할 수 있습니다.
(관심이 누군가를 위해, 여기에 기능이 생성 된 풀 요구입니다.)
-
==============================
2.대답은 레일 버전에 따라 다릅니다.
대답은 레일 버전에 따라 다릅니다.
구성을 적용 할 모든 환경에서 false로 config에게 include_all_helpers을 변경합니다. 당신이 설정이 모든 환경에 적용 할 경우, application.rb에서 변경.
config.action_controller.include_all_helpers = false
때 거짓, 그것을 포함을 건너 뜁니다.
와 ApplicationController에서 다음 줄을 삭제
helper :all
이러한 방법으로 각각의 컨트롤러는 자신의 헬퍼를로드합니다.
-
==============================
3.에서는 레일 (라인 224 정도) 3 actioncontroller / base.rb :
에서는 레일 (라인 224 정도) 3 actioncontroller / base.rb :
def self.inherited(klass) super klass.helper :all if klass.superclass == ActionController::Base end
당신이 ActionController :: 자료에서 클래스를 파생하는 경우 그래서 그래, 모든 헬퍼가 포함됩니다.
이 주위에 와서, 전화 clear_helpers (AbstractClass :: 도우미, ActionController :: 자료에 포함) 컨트롤러의 코드의 시작 부분에. clear_helpers 소스 코드 주석 :
# Clears up all existing helpers in this class, only keeping the helper # with the same name as this class.
예 :. :
class ApplicationController < ActionController::Base clear_helpers ... end
-
==============================
4.실제로 레일 2, ActionController :: 자료의 기본 기능은 모든 헬퍼를 포함하는 것이었다.
실제로 레일 2, ActionController :: 자료의 기본 기능은 모든 헬퍼를 포함하는 것이었다.
DHH에 의해 02/24/07 20시 33분 47초에 변경 집합 6222 (3 년 전) : 그것은 당신이 모든 헬퍼, 모든 시간을 원하는 기본 가정을 확인 (예, 예)
변화:
class ApplicationController < ActionController::Base helper :all # include all helpers, all the time end
레일 같이 3 베타 1, 즉 변경 로그에서 언급 된 경우가 더 이상 없음
from https://stackoverflow.com/questions/1179865/why-are-all-rails-helpers-available-to-all-views-all-the-time-is-there-a-way-t by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 루비 온 레일스와 함께 사용하기 위해 창에 포스트 그레스 설치 (0) | 2020.02.18 |
---|---|
[RUBY-ON-RAILS] 레일에 루비에 여러 데이터베이스에 연결 (0) | 2020.02.18 |
[RUBY-ON-RAILS] 속성이 변경되었을 경우 3 확인 레일 (0) | 2020.02.18 |
[RUBY-ON-RAILS] 어떻게 프로젝트에 레일 컨트롤러와 모델 이름을 바꾸려면 (0) | 2020.02.18 |
[RUBY-ON-RAILS] 루비의 액세스 방법을 인수하는 방법은 무엇입니까? (0) | 2020.02.17 |