1

我有一个页面,我需要在不同时间呈现一段 html 代码,这些代码始终具有相同的结构但不同的内容。我想提取布局中的结构并制作不同的部分,用相同的布局渲染它们。

主页

<body>
  <%= render partial: 'a', :layout => "layouts/card"%>
  <%= render partial: 'b', :layout => "layouts/card"%>
  <%= render partial: 'c', :layout => "layouts/card"%>
</body>

布局“布局/卡片”是这样的:

<div class="slide red">   
 <div class="row full-width">
    <div class="large-3 columns">
      <%= yield :content_a %>
    </div>
 </div>
 <div class="large-9 columns">
    <%= yield :content_b%>
 </div>
</div>

部分“a”是这样的:

<% content_for :content_a do %>
 <div>
  <div>
   Hello A
  </div>
    Hello A2
 </div>
<%end%>
<% content_for :content_b do %>
 <div>
  <div>
   Hello B
  </div>
    Hello B2
 </div>
 <img src="..."/>
<%end%>

部分 b 两者的内容不同,而且变化很大,所以我无法传递数千个参数

但是并没有真正起作用,并且在两个 yield 文件中都没有呈现没有内容的布局。我究竟做错了什么?

4

2 回答 2

0

尝试这个:-

 <%= render partial: 'a', :layout => "layouts/card"%>
于 2013-10-15T18:14:54.113 回答
0

我认为您在布局上的收益声明是在 content_for 之前先获取进程。在这种情况下,产量将被替换为空。我不确定是否有解决方案。

如果您将逻辑更改为如下所示,因为您只是想干掉您的代码,它实际上并不是一个布局:

_a.html.erb

<div class="slide red">   
 <div class="row full-width">
    <div class="large-3 columns">
      <%= content_a%>
    </div>
 </div>
 <div class="large-9 columns">
    <%= content_b%>
 </div>
</div>

主页

<body>
  <%= render partial: 'a', :locals => {:content_a => "Hello A", :content_b => "Hello B"}%>
  <%= render partial: 'a', :locals => {:content_a => "Hello C", :content_b => "Hello D"}%>
  <%= render partial: 'a', :locals => {:content_a => "Hello E", :content_b => "Hello F"}%>
</body>
于 2013-10-15T18:11:27.990 回答