Rails: как добавить заголовок на каждую страницу - PullRequest
17 голосов
/ 25 мая 2010

Каков стандартный способ добавления верхнего и нижнего колонтитула в каждое представление в приложении Rails?

Ответы [ 5 ]

25 голосов
/ 25 мая 2010

Если этот файл найден, он будет использован.

app / views / layouts / application.html.erb

<!doctype html>
<html>
  <head>
    <!-- stuff -->
  </head>
  <body>
    <!-- this is where content will be rendered -->
    <%= yield %>
  </body>
</html>

В противном случае вы можете вызвать другой файл.

# app/controllers/birds_controller.rb
class BirdsController < ApplicationController

  layout :birds   # looks for app/views/layouts/birds.html.erb

  # ...
end
9 голосов
/ 25 мая 2010

поместите верхний и нижний колонтитулы в макет приложения, который находится по адресу app / views / layouts / application.html.erb . Возможно, вам придется сначала создать этот файл.

3 голосов
/ 25 мая 2010

Чтобы добавить любой «шаблонный» код на все страницы, используйте файл макета. Обычно он находится в app / views / layouts /.

Создайте страницу так же, как и в любом другом представлении Rails. В общем случае рекомендуется размещать теги <html>, body и т. Д. Внутри макета, чтобы избежать повторения.

В том месте, где вы хотите, чтобы содержимое из отдельных видов отображалось, вставьте тег <% yield %>. Из-за блочного синтаксиса Ruby и способа, которым Rails реализует макеты, это позволит любому представлению, контроллер которого определяет этот макет, «наследовать» весь макет и вставлять только содержимое, специфичное для страницы.

Чтобы использовать макет глобально, назовите файл application.html.erb или укажите параметр render: layout.

1 голос
/ 25 мая 2010

создать общий макет 'app / views / layouts / .html.erb', как сказал x1a4. А внутри вы можете создать свой верхний и нижний колонтитулы

Если вы хотите, вы можете сделать это как две части и вызвать внутри файла макета. Но если у вас есть только один макет, вам может не понадобиться

Наличие заголовков и нижних колонтитулов в партиалах имеет смысл, если у вас есть 2-3 типа макетов (например, для обычных пользователей, администраторов и т. Д.)

и в ваших контроллерах сразу после объявления класса

класс UsersController

веселит, Самира

1 голос
/ 25 мая 2010

Вы найдете файлы макета вашего приложения в app/views/layouts/.

...