在Rails视图中重复的HTML片段

时间:2016-04-18 09:36:41

标签: ruby-on-rails erb

我正在使用一个bootstrapping框架,它有以下代码片段,我经常使用它:

<div class="panel panel-default">
    <div class="panel-heading">...</div>
    <div class="panel-body">
        ...
    </div>
</div>

(该片段实际上会更大,但我想从小处开始)

所以我认为我会构建一个部分并使用它,就像这样:

部分

<div class="panel panel-default">
    <div class="panel-heading"><%= title %></div>
    <div class="panel-body">
        <%= yield %>
    </div>
</div>

使用示例

<%= render partial: "panel", locals: { title: "Hello" } do %>
    Testing
<% end %>

但这显然不起作用。我收到以下错误:

  

'nil'不是与ActiveModel兼容的对象。它必须实现:to_partial_path。

我在这里做错了吗?我是否理解偏错?

1 个答案:

答案 0 :(得分:0)

为了使yield能够正常运作,我认为除了render :layout之外,您还需要使用:partial代替/:

<%= render layout: "panel", locals: { title: "Hello" } do %>
    Testing
<% end %>

阅读PartialRenderer示例以获取更多信息