paper_trail 显示成员更改日志(没有针对每个错误的方法)

paper_trail show log of changes to a member (no method for each error)

我正在尝试在显示视图中显示特定成员的更改日志。成员信息在那里,版本历史记录正在运行。

我无法显示该特定成员的 versions/changes 日志。我收到此错误:

 ActionView::Template::Error (undefined method `each' for #<PaperTrail::Version:0x007f55f23ee348>): 

我的控制器里有这个:

    # Detailed Member Profile
    def show
        @versions = PaperTrail::Version.find(params[:id])
        @members_main = Members::Main.find(params[:id])
    end

在我的展示视图中:

<div class="row">
    <div class="col-md-6">

    </div>
    <div class="col-md-6">
        <% @versions.each do |version| %>
            <li>
                <%= l(version.created_at, format: "%-d.%m.%Y %H:%M:%S %Z") %><br/>
                Event ID: <%= version.id %><br/>
                <b>Target:</b> <%= version.item_type %>
                <small>(id: <%= version.item_id %>)</small>; <b>action</b> <%= version.event %>;<br/>
                <div>
                    More info:
                    <pre><%= version.object %></pre>
                </div>
            </li>
        <% end %>
    </div>
</div>

型号:

class Members::Main < ActiveRecord::Base

    # Add Paper Trail
    has_paper_trail

end

我认为ActiveRecord的find方法returns只有一个对象。该对象没有 each 方法。

请参阅文档 here

特别是这一行@versions = PaperTrail::Version.find(params[:id])。它 returns 给定 id 的对象。但是该对象没有名为 each 的方法。那是你的错误文本。

您可能期望的是它 returns 一个数组,但显然不是。

尝试将其更改为 @versions = PaperTrail::Version.find([params[:id]]),我相信它应该有效。注意 方括号 .