Rails视图渲染嵌套布局 - 命名yield不起作用,而未命名的yield确实有效

时间:2018-03-17 20:24:35

标签: ruby-on-rails view rendering yield

非工作代码:

# application.html.erb, BASE layout
<html>
<head>
<body>
<%= yield %>
</body>
</head>
</html>

# _pwa.html.erb, SPECIFIC layout
<div class="container">
  <%= yield :main_content %>
</div>

# _partial.html.erb, ACTUAL body
<% content_for :main_content do %>
  <h1>Test</h1>
<% end %>

# view.html.erb, actual view file that links everything together
<%= render layout: "layouts/pwa" do %>
  <%= render "partial" %>
<% end %>

当控制器呈现view.html.erb时,我希望输出html文件看起来像这样:

<html>
<head>
<body>
  <div class="container">
    <h1>Test</h1>
  </div>
</body>
</head>
</html>

<h1>Test</h1>实际上并不存在。另一方面,如果我删除了命名的yield,并且只是替换为常规yield,它确实有效。即,下面的代码确实生成了上面的正确输出:

工作代码:

# application.html.erb, BASE layout
<html>
<head>
<body>
<%= yield %>
</body>
</head>
</html>

# _pwa.html.erb, SPECIFIC layout
<div class="container">
  <%= yield %>
</div>

# _partial.html.erb, ACTUAL body
<h1>Test</h1>

# view.html.erb, actual view file that links everything together
<%= render layout: "layouts/pwa" do %>
  <%= render "partial" %>
<% end %>

但我确实想知道如何让命名区域工作,因为实际的pwa布局有点复杂,我想做类似下面的事情:

# _pwa.html.erb
<div class="container">
  <%= yield :main_content %>
</div>
<div class="container">
  <%= yield :secondary_content %>
</div>

# _partial.html.erb
<% content_for :main_content do %>
  <h1>Test</h1>
<% end %>
<% content_for :secondary_content do %>
  <h2>Second</h2>
<% end %>

编辑,我实际上有一个像这样的迭代器:

<%= render layout: "layouts/pwa" do %>
  <% @pages.each do |p| %>
    <%= render "partial/#{p}" %>
  <% end %>
<% end %>

1 个答案:

答案 0 :(得分:0)

感谢您的反馈!我最终做的是下面。这完成了:

  1. 拥有一个渐进的应用程序&#34;在没有重定向的网站上感觉(即,JS隐藏/显示内容模拟从一个页面移动到另一个页面)对于X页面。我认为这是最难的部分,因为它打破了MVC ...但在我的案例中是一个重要的权衡
  2. 为所有X页面呈现了一个SINGLE布局,但此布局上的某些内容会因我们所在的页面而异。
  3. X页面上的内容可在Y页面的其他渐进流程中进一步共享
  4. 查看文件层次结构

    data = pd.read_csv('measurements.csv', decimal=',')
    

    <强>代码

    Symbol()