HTML 在 Rails 视图中重复的片段

HTML Snippets that repeat in the Rails views

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

<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' is not an ActiveModel-compatible object. It must implement :to_partial_path.

我是不是做错了什么?我理解错了吗?

为了 yield 工作我认为你需要使用 render :layout 而不是 of/in 除了 :partial:

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

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