Каков стандартный способ добавления верхнего и нижнего колонтитула к каждому представлению в приложении Rails?
Rails: как добавить заголовок на каждую страницу
Ответ 1
Если этот файл будет найден, он будет использоваться.
приложение/просмотров/макеты/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
Ответ 2
поместите верхний и нижний колонтитулы в макет приложения, который можно найти в приложении /views/layouts/application.html.erb. Возможно, вам придется сначала создать этот файл.
Ответ 3
Чтобы добавить любой "шаблонный" код ко всем страницам, используйте файл макета. Обычно он находится в app/views/layouts/.
Создайте страницу так же, как и с любым другим видом Rails. В общем, рекомендуется помещать теги <html>
, body
и т.д. Внутри макета, чтобы избежать повторения.
В том месте, где вы хотите, чтобы содержимое из отдельных представлений отображалось, поместите тег <% yield %>
. Из-за синтаксиса блока Ruby и способа Rails реализует макеты, это позволит любому представлению, чей контроллер задает этот макет, чтобы "наследовать" весь макет и вставлять только содержимое для страницы.
Чтобы использовать макет во всем мире, назовите файл application.html.erb или укажите параметр render: layout.
Ответ 4
Вы найдете файлы макета приложения в app/views/layouts/
.
Ответ 5
создать общий макет 'app/views/layouts/.html.erb', как сказал x1a4. И внутри этого вы можете создать свой верхний и нижний колонтитул
Если вы хотите, вы можете сделать это как две частичные и вызвать внутри файла макета. Но если у вас есть только один макет, вам может не понадобиться этот
имеющий верхний и нижний колонтитулы в частичных смыслах имеют смысл, если у вас есть 2-3 типа макета (например, для обычных пользователей, администраторов и т.д.)
и в ваших контроллерах сразу после объявления класса
class UsersController < ApplicationController layout 'layout name' конец
веселит, Sameera