我有一个页面,我需要在不同时间呈现一段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文件中没有内容的情况下呈现布局。 我做错了什么?
答案 0 :(得分:0)
我认为布局上的yield语句首先在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>
答案 1 :(得分:0)
试试这个: -
<%= render partial: 'a', :layout => "layouts/card"%>