블로그를 비롯한 여러 가지 질문을 여러 시간 동안 읽은 후 마침내 도움을 요청해야했습니다.주 레이아웃의 부분이 페이지 요청마다 다시 렌더링되거나 업데이트되는 것을 방지하려면 어떻게해야합니까?
저는 레일스 레이아웃/렌더링/산출 메커니즘에 대한 이해가 아직 부족하다고 생각합니다. 그러므로 어쩌면 어리석은 질문 일 수 있습니다. 나는 당신의 용서를 구걸한다.
페이지 요청마다 부분 인쇄물이 렌더링되지 않도록 할 수 있습니까? 내 앱의 링크를 클릭 할 때마다 레이아웃과 부분을 다시로드한다는 뜻입니다.
내 목표는 어떻게 든 정적 사이드 바를 가지며, "application.html.erb가 처음으로로드되었습니다"부분을 렌더링하여 한 번 채우고 아약스 만 사용하여 업데이트합니다.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= content_for?(:title) ? yield(:title) : "GEN" %></title>
<meta name="description" content="<%= content_for?(:description) ? yield(:description) : "GEN" %>">
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body class="darkbody">
<header class="navbar navbar-fixed-top navbar-inverse">
<nav class="navbar-inner">
<div class="container-fluid">
<%= render 'layouts/navigation' %>
</div>
</nav>
</header>
<main role="main">
<div class="container-fluid">
<div class="row-fluid">
<div class="span3">
<%= render partial: 'charts/dashboard', layout: false %>
</div>
<div class="span9">
<div class="well well-small">
<%= render 'layouts/messages' %>
<%= yield %>
</div>
</div>
</div>
</div>
</main>
</body>
</html>
은 "대시 보드"부분 번로드해야 다시 렌더링되지 않을 :
여기 내 응용 프로그램의 레이아웃입니다. 즉, 앱을 탐색하면 yield 섹션의 콘텐츠는 변경/새로 고침되지만 기본 레이아웃 인 'partials'에는 표시되지 않습니다.
동기 부여가? 대시 보드는 도우미 메서드를 사용하여 계산되고 사용자 세션 전체에서 업데이트되지 않는 값을 표시합니다. 많은 도움을 얻으면이 도우미는 모든 사용자가 클릭 할 때마다 실행되며 동일한 결과를 반환하더라도 앱 서버를 강조합니다. 실제로 어떻게됩니까?
너무 미친가 아니면 바보 같은가요?
안부,
가 아주 좋은, @Ivan K.는 거기에 어떤 조언가 가이드 레일에
이당신은 자세한 내용을 읽을 수 있습니다 dev 모드에서 테스트 하시겠습니까? "렌더링"문을 캐시 블록 wo/success에 래핑했습니다. 캐시 매개 변수의 전체 경로를 사용해야합니까? – Arnauld
앞뒤로, 캐시가 도움이되지 않는다고 생각하기 시작했습니다. 데이터베이스를 크롤링하는 부분 내부에 도우미 함수가 있습니다 ... 나는 이것을 수행하고 가까운 미래에 SPA로 이동해야합니다. 완전 아약스가이 트릭을 할 것입니다. – Arnauld