1

我正在尝试使用 Paper trail 制作版本列表,该用户将能够看到版本之间的差异并返回到旧版本。

我已经找到了如何制作列表和指向此版本的链接,但由于某些原因,当我尝试具体化最后两个版本时出现错误。它说: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

看起来问题在于您尝试@page.versions[params[:version].to_i]使用版本对象的 id 进行调用,但 @page.versions 只是一个集合,并且期望与版本对象的 id 无关的索引。

这些解决方案中的任何一个都应该有效:

Version.find(params[:version])

或者

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