모든 과도 페이지에서 눈썹 메뉴의 표시 방법을 전환합니다

개시하다


페이지당 머리글 메뉴 내용을 전환하려는 데 따른 대응법이다.
(예: 홈 화면에 A, B, C의 메뉴, 새 투고 화면에 D의 메뉴 등)

그림 완성



컨디션


MacOS 10.15.7
ruby 2.6.5
Ruby on Rails 6.0.0

같이 일하자!


절차로 삼다
① 헤더를'메인 화면용 눈썹'과'새 발언 화면용 눈썹'으로 나누어 일부 템플릿을 만든다.
② 요청 경로에 따라 조건차를 두고 표시 내용을 전환한다.
.
이번 변경 로그인 시 제목에 표시된 메뉴 내용입니다.

① "홈 화면용 머리글" 및 "새 발언 화면용 머리글" 부분 템플릿 만들기


① - 1 먼저 홈 화면을 머리글로 만듭니다.views/layout 디렉터리에'root header.].erb'를 만듭니다.
_root_header.html.erb
<div class="headerMenus">
  <div class="headerMenus__left">
    <%= link_to image_tag("myTown4.jpg", class: "headerLogo"), "/" %>
    <% if user_signed_in? %>
      <div class="loginedMenus">
        <a href="#0", class="loginMenu">Top</a>
        <a href="#1", class="loginMenu">Category</a>
        <a href="#2", class="loginMenu">Prefecture</a>
        <a href="#3", class="loginMenu">New Posts</a>
      </div>
    <% else %>
      <div class="beforeLoginMenus">
        <%= link_to "ゲストログイン", users_guest_sign_in_path, method: :post, class: 'beforeLoginMenu' %>
        <%= link_to "ログイン", new_user_session_path, class: 'beforeLoginMenu' %>
        <%= link_to "新規登録", new_user_registration_path, class: 'beforeLoginMenu' %>
      </div>
    <% end %>
  </div>
  // 一部省略 //
</div>
작성
그나저나 로그인 시'Top, Category, Prefecture, New Posts'네 가지 메뉴가 표시됩니다.
①-2 "새 발언 화면용 머리글"부분 템플릿을 만듭니다.views/layout 디렉터리에 "header.].erb"를 만듭니다.
_header.html.erb
<div class="headerMenus">
  <div class="headerMenus__left">
    <%= link_to image_tag("myTown4.jpg", class: "headerLogo"), "/" %>
    <% if user_signed_in? %>
      <div class="loginedMenus">
        <%= link_to "Top Page", root_path, class:"loginMenu" %>
      </div>
    <% else %>
      <div class="beforeLoginMenus">
        <%= link_to "ゲストログイン", users_guest_sign_in_path, method: :post, class: 'beforeLoginMenu' %>
        <%= link_to "ログイン", new_user_session_path, class: 'beforeLoginMenu' %>
        <%= link_to "新規登録", new_user_registration_path, class: 'beforeLoginMenu' %>
      </div>
    <% end %>
  </div>
  // 一部省略 //
</div>
로그인하면 Top Page 메뉴가 표시됩니다.
※ 머리글 속의 기술은 사람에 따라 다르므로 당신의 기술 내용으로 고쳐 쓰십시오.

② 요청 경로에 따라 조건차를 두고 표시 내용을 전환한다.


views/layouts 내의 응용 프로그램입니다.html.요청 경로(주 화면으로 가는 경로 또는 다른 화면으로 가는 경로)에 따라erb에 대한 조건 불일치에 대한 기술.
application.html.erb
// 一部省略 //
<body>
  <header class="header">
    <%# トップページとその他のページでヘッダー表示を変更する %>
    <% if request.path == '/' %>
      <%= render partial: "layouts/root_header" %>
    <% else %>
      <%= render partial: "layouts/header" %>
    <% end %>
  </header>
  // 一部省略 //
</body>
<% if request.path == '/' %>'요청 경로가'/'(루트)인 경우'라는 뜻이다.이번에는 노선 경로를 메인 화면으로 설정한다.
조건이 진짜라면 (루트 경로)<%= render partial: "layouts/root_header" %>그리고 나서root_header.html.eb를 호출합니다.
가짜인 경우(루트 외부)<%= render partial: "layouts/header" %>헤더를 내다.html.eb를 호출합니다.
이만 마치겠습니다.

최후


나는 또 다른 더 좋은 방법이 있다고 생각한다.더 좋은 방법이 있으면 알려주세요.잘 부탁드립니다!

좋은 웹페이지 즐겨찾기