Ruby on rails:在布局中的特定位置生成特定视图
如果我有一个标记,那么我的所有视图都会在布局中的相同位置呈现。 我可以为不同的视图使用不同的
标签吗? 我是怎么做到的? 谢谢
查看ActionView :: Helpers :: CaptureHelper 。 您可以在视图中执行以下操作:
<% content_for :sidebar do %> <% end %>
这将在content_for块内运行模板,但不会作为常规模板yield
缓冲区的一部分输出,它将存储在单独的缓冲区中以供日后使用。 然后,在布局中,您可以使用yield :content_name
输出内容:
<%= yield %>
因此,在某种意义上,您可以为不同的视图使用不同的yield
,您只需在视图中为content_for
提供不同的内容名称,并在布局中使用相同的名称生成它。
考虑一下您的情况,您希望在不同的地方使用不同的视图。 假设您有三个面板:panel1,panel2和panel3。 您可以在布局中执行此操作:
<%= yield :panel1 %> <%= yield :panel2 %> <%= yield :panel3 %>
如果您不想,甚至不需要包含普通的<%= yield %>
。 然后在您的视图中,您可以通过使用适当的content_for
围绕整个视图来选择显示内容的面板。 例如,您的一个视图可能会像这样更改:
<% content_for :panel2 do %> <% end %>
在面板2中显示。另一个可能用于面板3,如下所示:
<% content_for :panel3 do %> <% end %>
是的,您可以拥有多个<%= yield %>
标记。 您可以在基本视图中使用这些名称指定每个yield
标记。
<%= yield :head %>
<%= yield :footer %>
然后在各个视图中使用content_for
标记。
<% content_for :head do %> <%= stylesheet_link_tag 'custom' %> <% end %>
您可以使用yield和content来:
For example: <%= yield :head %> <% content_for :head do %> A simple page <% end %>
- 参考: 布局和渲染指南。