기본적으로 rails 앱은보기에 대한 모든 도우미 메서드를 공유합니다. 모든 도우미 메서드는 모든보기간에 자동으로 공유되며 이로 인해 응용 프로그램이 커지면 명명 충돌이나 혼동이 발생할 수 있습니다. 전체 앱에 대해 공유되는 것으로 간주되는 몇 가지 방법이 있습니다. 공유하는 방법과 그 "글로벌"방법을 어디에 두어야합니까?전체 앱에 대해 공유되는 것으로 간주되는 메소드는 어디에 두어야하나요?
감사합니다.
기본적으로 rails 앱은보기에 대한 모든 도우미 메서드를 공유합니다. 모든 도우미 메서드는 모든보기간에 자동으로 공유되며 이로 인해 응용 프로그램이 커지면 명명 충돌이나 혼동이 발생할 수 있습니다. 전체 앱에 대해 공유되는 것으로 간주되는 몇 가지 방법이 있습니다. 공유하는 방법과 그 "글로벌"방법을 어디에 두어야합니까?전체 앱에 대해 공유되는 것으로 간주되는 메소드는 어디에 두어야하나요?
감사합니다.
레일즈가 객체 지향 언어 인 Ruby를 기반으로한다는 사실 때문에 일반적으로 "글로벌"메소드가 필요 없다고 생각합니다. Rails는 객체 지향 패턴 인 MVC를 강하게 구현하고 있습니다.
하지만 전역 적으로 액세스 할 수있는 코드를 배치해야하는 경우 모든 클래스를 확장하여 허용하는 Ruby를 자유롭게 사용할 수 있습니다.
class Object
def my_global_method
...
end
end
를 사용하여이 사용할 수 있도록 사방 경우는로드. "Rails Guide on Configuration" 읽기 자연스러운 장소는 추가 한 파일을 config/application.rb
에 요구하는 것입니다. 또 다른 옵션은 파일을 디렉토리 config/initializers
에 놓을 수 있기 때문에 Rails가 초기화 된 후 자동으로로드됩니다.
현재 "전역"메소드는 sessions_helper.rb에 저장하고 application_controller.rb에는 SessionsHelper를 포함합니다. 우리는 myapp의 어디서나 메소드를 사용할 수 있습니다. config/application.rb에 메소드를 추가하는 경우. 코드가 myapp 모듈 내에서 추가 되었습니까? Class Application << Rails :: Application? – user938363
글로벌은 전역을 의미합니다. 각 개체는 액세스 권한이 있습니다. 접근 방식으로 모든 뷰와 컨트롤러는 액세스 할 수 있지만 모델 객체는 없습니다. 그리고 아니요, 어떤 모듈에도 없습니다. – mliebelt