레일의 DRY 개념에 대해 많이 배우고 있습니다. 내 질문은 여기에 있습니다.전역 변수는 어디에 있습니까?
Locations
과 같이 항상 다양한 객체를로드해야하는 애플리케이션의 고정 된 사이드 바가 있습니다. 내 index
페이지와 관련된 컨트롤러에서
controllers/pages_controller.rb
에 내가
@locations
로드 해요 : 나는 위치를 선택하고로드하면, 그러나, 내 탐색 메뉴 (사이드 바)에 대한 잘 작동
@company = current_user.company
@locations = if @company
current_user.company.locations.order(:name)
else
[]
end
다른 컨트롤러에서 위임 한보기 (이 경우 locations/show.html.erb
) 내 @locations
변수를 더 이상 찾을 수 없습니다.
물론, locations_controller.rb
파일의 show
메소드에 추가 할 수는 있지만, 위의 코드를 사이드 바 탐색 메뉴에 의존하는 모든 단일 컨트롤러 메소드에 넣어야한다고 생각하지는 않습니다. 그것들은 고정되어 있기 때문에!)
한 번 수행하고 모든 컨트롤러에서 수행하지 않아도되는 DRY 방법은 무엇입니까?
before_action
을 사용할 수 있습니다 ** 그냥 참고 사항 : ** Rails 5에서는 before_filter가 더 이상 사용되지 않으므로'before_action' 콜백을 대신 사용합니다. – bntzio