각 요청의 URL에 전달 된 GET 매개 변수에 따라 애플리케이션의 레이아웃을 변경하려고합니다 : &layout=name_of_the_layout
. 레일 도우미 라우트 오버라이드 GET 매개 변수에서 레이아웃을 설정하는 방법
그리고 내 application_controller에서
가 다음 사용자가 응용 프로그램에서 탐색 할 때class ApplicationController < ActionController::Base
layout :get_layout_from_params
private
def get_layout_from_params
if params['layout']
params['layout']
else
'application'
end
end
end
그것은 잘 작동하지만로 레이아웃을 "유지", 내보기에 각 레일 노선 도우미에이 매개 변수를 추가해야합니다 (심지어 형태의 POST 요청 ...에 대한) : get_layout_from_url()
는 params['layout']
이 URL에 설정되어있는 경우 확인하는 도우미가
ressource_path(@ressource, :layout => get_layout_from_url())
는, 다음의 유효성을 확인 돌려줍니다.
이것은 확실히 DRY가 아닙니다 ... 내 뷰에 추가 코드를 작성하지 않고이 동작을 포함하도록 모든 경로 도우미를 무시할 수 있습니까? 내 견해로는 표준 레일 메서드를 호출하고 싶습니다. ressource_path(@ressource), ...
또는이를 구현하는 더 효과적인 방법이 있습니까?
추 신 : 레일을 사용 중입니다. 3.2.3
고마워요!
정확히 내가 뭘 찾고 있었는지 고마워! – Tricote