플러그인을 사용하지 않고 Rails 앱에서 페이지에 대한 사용자 정의 제목을 만드는 가장 좋은 방법은 무엇입니까?
답변
당신의 견해에서 다음과 같이하십시오 :
<% content_for :title, "Title for specific page" %>
<!-- or -->
<h1><%= content_for(:title, "Title for specific page") %></h1>
레이아웃 파일은 다음과 같습니다.
<head>
<title><%= yield(:title) %></title>
<!-- Additional header tags here -->
</head>
<body>
<!-- If all pages contain a headline tag, it's preferable to put that in the layout file too -->
<h1><%= yield(:title) %></h1>
</body>
헬퍼 메소드로 content_for
and yield(:title)
문 을 캡슐화 할 수도 있습니다 (다른 사람들이 이미 제안했듯이). 그러나 이와 같은 간단한 경우에는 사용자 정의 도우미없이 필요한 코드를 특정보기에 직접 넣기를 좋아합니다.
답변
사용하고 싶은 간단한 옵션이 있습니다.
레이아웃에서
<head>
<title><%= @title %></title>
</head>
페이지 템플릿 상단 (첫 번째 줄)
<% @title="Home" %>
레이아웃과 페이지 템플리트가 구문 분석되는 방식으로 인해 레이아웃이 렌더링되기 전에 @ title = “Home”이 평가됩니다.
답변
모범 사례는 content_for를 사용하는 것입니다.
먼저 두 가지 도우미 메소드를 추가하십시오 (예 : app / helpers / application_helper.rb에 고정).
def page_title(separator = " – ")
[content_for(:title), 'My Cool Site'].compact.join(separator)
end
def page_heading(title)
content_for(:title){ title }
content_tag(:h1, title)
end
그런 다음 레이아웃보기에서 간단히 사용할 수 있습니다.
<title><%= page_title %></title>
…보기 자체에서 :
<%= page_heading "Awesome" %>
이 방법을 사용하면 제목에 h1 태그를 붙인 위치를 섞을 수 있으며 컨트롤러에 성가신 @title 변수가 없어야합니다.
답변
@opsb 및보다 완전한 @FouZ 형식 개선 :
에서 application.html.erb
:
<title><%= @title || "Default Page Title" %></title>
erb 파일 또는 해당 컨트롤러에서 :
<% @title = "Unique Page Title" %>
답변
살펴보기 content_for
: http://railscasts.com/episodes/8
답변
만족시키려는 사용 사례 또는 요구 사항에 대한 자세한 내용없이 몇 가지 대안을 생각할 수 있습니다.
1) 레이아웃 페이지 중 하나에서 제목을 전환하고 저장된 도우미 메소드를 사용하십시오. application_helper.rb
<title><%= custom_title %></title>
이 방법은 각 레이아웃 페이지에 고유 한 제목을 제공합니다.
2) Railscasts는 HEAD 태그 사이에 표시되는 부분을로드하기 위해 부분을 사용하도록 제안합니다.
3) load 이벤트 후에 제목을 변경해야하는 경우 javascript / ajax 호출을 사용하여 DOM을 조작하십시오.
title
요소로 태그가 지정된 컨텐츠를 변경하고 싶지 않을 수도 있습니다 . 아마도 사용자는 사이트 탐색 계층과 관련하여 사용자가 항상 어디에 있는지 알 수 있도록 일종의 사이트 이동 경로가 필요할 수 있습니다. goldberg plugin이 어떻게 작동하는지 잘 알고 있지만 동일한 기능을 수행하는 다른 방법이있을 것입니다.
답변
나는 다음을 사용하여 페이지에서 호출 할 수있는 제목 변수를 제공하는 nifty_generator의 “nifty_layout”을 사용합니다.
<% title "Title of page" %>
또한 사용자 <% title "Title of page", false %>
는 제목이 페이지 자체가 아닌 브라우저 제목에만 표시되도록 할 수 있습니다 .