Подтвердить что ты не робот

Вложенные макеты в рубине на рельсах

Я новичок в рельсах, и я пытаюсь разобраться, как работать вложенные макеты; Я предполагаю, что они немного похожи на главные страницы .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.

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

4b9b3361

Ответ 1

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

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

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

с

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

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

Приветствия

Ответ 2

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

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

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

Ответ 3

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