纸质版本

时间:2013-11-27 10:26:46

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

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

我已经找到了如何制作列表并链接到这个版本,但由于某些原因,当我尝试修改最后两个版本时,我收到了错误。 它说:未定义的方法`reify'为nil:NilClass

有谁知道,该怎么做以及差异版本化?

# 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"%>

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

看起来问题是你试图用你的版本对象的id调用@page.versions[params[:version].to_i],但@ page.versions只是一个集合,并期望一个索引与版本对象的id无关。 / p>

这些解决方案都应该有效:

Version.find(params[:version])

或者

@page.versions.find(params[:version])