1

Paper Trail を使用してバージョン リストを作成しようとしています。これにより、ユーザーはバージョン間の違いを確認し、古いバージョンに戻すことができます。

このバージョンへのリストとリンクを作成する方法を見つけましたが、いくつかの理由で、最後の 2 つのバージョンを具体化しようとするとエラーが発生します。nil:NilClass の未定義メソッド「reify」

それについて何をすべきか、そして差分バージョン管理についてはどうすればよいか、誰かが知っていますか?

# controller
def edit
@page = Page.find(params[:id])
@versions = @page.versions
@page = @page.versions[params[:version].to_i].reify if params[:version]
end

# Model
class Page < ActiveRecord::Base
validates :title, :presence => true
belongs_to :category
has_paper_trail
end

# View
<% @versions.each do |version| %>
<ul>
<li><%= version.id %> <%= link_to "Previous version", {:version => (version) }%></li>
</ul>
<% end %>
<%= link_to "Go to current version"%>

ご協力ありがとうございました

4

1 に答える 1

1

問題は、バージョン オブジェクトの ID を使用して呼び出そうとしているように見えますが@page.versions[params[:version].to_i]、 @page.versions は単なるコレクションであり、バージョン オブジェクトの ID とは無関係のインデックスを期待しています。

これらの解決策のいずれかが機能するはずです。

Version.find(params[:version])

または

@page.versions.find(params[:version])
于 2013-12-02T16:47:43.217 に答える