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

时间:2016-06-10 04:09:57

标签: ruby-on-rails ruby paper-trail-gem

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

我在显示该特定成员的版本/更改日志时遇到了麻烦。我收到这个错误:

 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

1 个答案:

答案 0 :(得分:3)

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

请参阅文档here

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

你可能期望它返回一个数组,但显然没有。

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