0

저는 많은 웹 페이지를 가지고 있지만 대부분 6 페이지 또는 7 카테고리 중 1 페이지에 속합니다. 이러한 웹 페이지 카테고리마다 약간 다른 배경색/이미지와 같은 모양과 느낌을 가지고 있습니다. 나는 views/layout/application.html.erb에 다음과 같은 한 :레일에서 레이아웃과 CSS 목적으로 웹 페이지를 분류합니다.

<% content_for :page_type, 'information' %> 

를하지만 정말 모든 단일 웹 페이지에 대한 것을 할 수있는 고통과 내가이 상황을 타개하고자 할 때 :

<header class="sub<% if content_for?(:page_type) %> <%= yield(:page_type) %><% end %>"> 

그리고 모든 단일 뷰에서

, 내가 가진 나는 이것들을 어지럽히 지 않고있다 (나는 많은 페이지가있다).

<header class="sub<%= @page_type ? ' ' + @page_type : '' %>"> 

및 뷰의 :

<% @page_type = 'information' %> 

이 장점은 내가 컨트롤러에서 before_filter :set_page_type을 할 수 있으며 모든 번 페이지 유형을 설정 그래서, 대신 그냥 변수를 사용하여 생각하고 있어요 그것이 제어하는보기 (큰 도움).

나에게 가장 좋은 방법은 URL의 첫 번째 폴더를 웹 페이지의 카테고리로 사용하는 것일 수 있습니다. URL을 재구성해야하지만 어쨌든 그렇게하는 것이 좋습니다. 나는 그렇게 남아 있어야 할 몇 가지 최상위 페이지를 가지고있다.

이것은 대부분의 페이지를 분류하고 레이아웃에서 그 분류를 사용하는 가장 좋은 방법은 무엇입니까? 나는 보통 몸 클래스의 도우미를 사용하고

답변

1

-이 같은 :

def body_class(c = nil) 
    @body_class ||= [controller.controller_name] 
    @body_class << c 
    @body_class.flatten.compact.uniq.join(" ") 
end 

기본적으로이 뜻 당신은 또한 등 조치를 포함 할 수있다 (컨트롤러의 이름을 포함을 .. 그때 나는이 전화 당신이 (필자는 body 태그를 사용) 레이아웃의 필요에 따라 뷰에서 도우미, 예를 들면 도우미는 항상 클래스 문자열을 반환하기 때문에

<% body_class "bar" %> 

, 당신은 다음 인수없이 가능성을 같은 도우미를 호출 할 수 있습니다 :

이 예에서 도우미를 정의하는 경우

<body class="foos bar"> 

다음 FoosController라는 컨트롤러의 이전 예제에서 렌더링 할

<body class="<%= body_class %>"> 

응용 프로그램 컨트롤러와 helper_method을 사용하여보기에 사용할 수 있도록, 이것은 당신이 뭘 잘하면 많이해야합니다.

관련 문제