문제

나는 이것이 이전에 요청 된 것 같지만 Google을 검색했지만 솔루션을 생각해 내지 않았습니다.

이것이 제가 레일 2.3.5에서하려는 일입니다.

layouts/application.html.erb:
<html>
  <head>
    ... some other stuff
    <%= yield :head %>
  </head>
  <body>
    <% content_for :head, "something that belongs in the head" %>
  </body>
</html>

수율을 주목하십시오 ~ 전에 content_for.

기본적으로 Rails가 다음과 같은 내용을 허용하지 않는다는 것을 알고 있습니다. 헤드 정의 ~ 후에 수율이 사용되었습니다 - 의미가 있습니다.

나는 심지어 템플릿 렌더링 프로세스에 연결을 시도했지만 지금까지는 성공하지 못했습니다.

따라서 내 목표는 부분/템플릿 내부의 Content_를 정의 할 수 있고 응답이 브라우저로 전송되기 직전에 "수율"을 어떻게 든 지연되고 실행하는 것입니다.

누군가 해결책을 생각해 냈습니까?

인사와 감사합니다, 프랭크

업데이트나는 Weppos의 아이디어와 함께 가서 Rack Middleware에서 나 자신을 시험해 볼 것이다. 감사해요

도움이 되었습니까?

해결책

렌더링 프로세스는 먼저 액션 템플릿을로드하고 실행 한 다음 선택한 레이아웃으로 템플릿을 장식합니다. 레이아웃은 상단에서 Botton으로 렌더링되므로 더 많은 콘텐츠를 추가 할 수 없습니다. :head ~ 후에 :head 이미 렌더링되었습니다.

전략을 바꿔야합니다. 조각을 부분적으로 배치하고 액션 뷰에 첨부하거나 랙 모듈/After_Filter와 같은 후 처리 전략을 사용하여 HTML 코드를 직접 변경하십시오.

아마 실제로 필요한 것을 바탕으로 더 나은 솔루션을 찾으려고 노력할 것입니다. 이 문제를 겪고 있다면 앱 아키텍처에서 오류가 다른 곳에있을 가능성이 있습니다.

다른 팁

당신의 동등한 사인이 없어야합니다 content_for 성명. 그것은해야한다:

<% content_for :head, "Something that belongs in the head" %>

템플릿과 부분 내에서 내용을 정의하면 작동해야합니다. 이 기술은 덮여있었습니다 RailScast 에피소드 8.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top