рубиновый шаблон - PullRequest
       6

рубиновый шаблон

0 голосов
/ 15 декабря 2009

У меня есть файл layout.html.erb, который должен действовать как общий файл для оформления всех страниц, как показано ниже.

<%= render :partial => "layouts/header" %> 
  <%= render :partial => "layouts/leftsidemenu" %>
  <body>
    <%= @content_for_layout %>
  </body>
<%= render :partial => "layouts/footer" %>

Как я могу настроить эту платформу rails так, чтобы я не хотел включать layout.html.erb во все страницы как

<%= render :partial => "layouts/layout" %> 

Мне нужен файл конфигурации для декорирования, как мы делаем в инфраструктуре Struts, используя файл sitemesh decorator.xml.

спасибо заранее Махеш

Ответы [ 2 ]

2 голосов
/ 15 декабря 2009

Прежде всего, макет по умолчанию для приложения Rails находится в <rails_app>/app/views/layouts/application.html.erb и используется потому, что все ваши контроллеры наследуются от ApplicationController (см. Имя, так как соглашение Rails использует макет с тем же базовым именем, что и контроллер, или имя родительского контроллера и и так далее.

Во-вторых, ваш макет должен выглядеть примерно так:

<%= render :partial => "header" %> 
<%= render :partial => "leftsidemenu" %>
<body>
  <%= yield %>
</body>
<%= render :partial => "footer" %>

даже вставьте содержимое из верхнего и нижнего колонтитула в этот макет. Более подробную информацию о макетах вы можете найти в этом руководстве .

Если вы хотите изменить какой-либо аспект страницы, например заголовок, то вы можете сделать это и с макетами:

# header.html.erb
<head>
  <title>
    <%= yield(:title) of "Default title" %>
  </title>
</head>

# page.html.erb
<% content_for :title do %>
  Specific title
<% end %>

Page content

Если вы хотите использовать макет из другого файла, вы можете сделать это следующим образом:

# ApplicationController.rb

class ApplicationController < ActionController::Base
  # ...
  layout 'your_layout' # file in app/views/layouts
  # ...
end
1 голос
/ 15 декабря 2009

Взгляните на документы Rails для структурирующих макетов , особенно тегов yield и content_for. Вы также можете указать макет с layout в контроллере или по умолчанию для всех контроллеров в вашем контроллере приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...