Вложенные макеты в рубине на рельсах - PullRequest
12 голосов
/ 12 апреля 2009

Я новичок в рельсах и пытаюсь понять, как заставить работать вложенные макеты; Я предполагаю, что они немного похожи на главные страницы .net?

Я следовал этому руководству , и я создал application.erb.html в моей директории макета, который содержит это:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title><%= @page_title or 'Page Title' %></title>
  <%= stylesheet_link_tag 'layout' %>
  <style type="text/css"><%= yield :stylesheets %></style>
</head>
<body>

<%= yield(:content) or yield %>

</body>
</html>

и изменили один из моих существующих макетов так:

<% content_for :stylesheets do %>

<% end -%>

<% content_for :content do %>
  <p style="color: green"><%= flash[:notice] %></p>
  <%= yield %>
<% end -%>

<% render :file => 'layouts/application' %>

Когда я захожу в один из моих просмотров в браузере, абсолютно ничего не отображается; при просмотре исходного кода нет HTML.

Я уверен, что есть кое-что элементарное, что я пропустил, кто-нибудь может указать это, пожалуйста?!

Ответы [ 3 ]

29 голосов
/ 12 апреля 2009

Я разработал решение, хотя это не то, что дано в этой статье

Я заменил эту строку

<% render :file => 'layouts/application' %>

с

<%= render :file => 'layouts/application' %>

Я не уверен, что статья неправильная или я нашел неправильный способ ее исправить! Пожалуйста, дайте мне знать!

Приветствия

4 голосов
/ 14 апреля 2009

В оригинальной статье произошла ошибка, и ваше решение верное. Вот причина:

Вывод ruby-кода в ERB (представление), заключенного в <% =%>, добавляется к сгенерированному HTML и отправляется в браузер. Вывод кода ruby, заключенного в <%%>, не добавляется в HTML. Поэтому вызов <% render: частичный ...%> не имеет никакого эффекта, так как результат этого кода ruby ​​(выборка частичного) не добавляется в сгенерированный файл HTML.

<%%> обычно зарезервировано для условных выражений и циклов, как показано в примере выше.

0 голосов
/ 01 марта 2011

Вот другой подход к вложенным макетам, которые могут пригодиться.

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