Ruby on rails 纸迹显示有许多对象

Ruby on rails 纸迹显示有许多对象,ruby-on-rails,paper-trail-gem,Ruby On Rails,Paper Trail Gem,我正在使用纸质跟踪gem跟踪orderweb应用程序的版本更改。我在显示有多个版本的文件时遇到问题 订单型号: class Order < ActiveRecord::Base has_paper_trail has_many :line_items, dependent: :destroy, inverse_of: :order, order: "position", autosave: true end 历史记录html: <% @line_item_versions.

我正在使用纸质跟踪gem跟踪orderweb应用程序的版本更改。我在显示有多个版本的文件时遇到问题

订单型号:

class Order < ActiveRecord::Base
  has_paper_trail
  has_many :line_items, dependent: :destroy, inverse_of: :order, order: "position", autosave: true
end
历史记录html:

<% @line_item_versions.each_with_index do |version, index| %>
  <b>Version: </b><%= index + 1 %><br/>
  Event ID: <%= version.id %><br/>
  <b>Target:</b> <%= version.item_type %>
  <small>(id: <%= version.item_id %>)</small>; <b>action</b> <%= version.event %>;<br/>
<% end %>
您正在定义:

@line_items = LineItem.find_all_by_order_id(params[:id])
这意味着
@line\u items
是多个行项目记录的数组。然后,你打电话:

@line_item_versions = @line_items.versions
但是
.versions
方法是LineItem的一个实例方法(一个
行\u项有多个版本
)。这会导致数组的未定义方法“版本”出现错误(
@line\u items
此处是数组)


要解决此问题, 我认为你应该做以下事情(但是有很多选择,取决于你想做什么):


版本:
事件ID:
目标: (身份证号码:);行动

我只是用3分钟的时间“修复”了它。非常感谢你的帮助。我刚刚发现这个解决方案稍微解决了这个问题。如果我删除一个行项目,然后对所有找到的行项目调用.versions,它显然不会显示删除的行项目。
undefined method `versions' for #<Array:0x007f859d37eb30>
@line_items = LineItem.find_all_by_order_id(params[:id])
@line_item_versions = @line_items.versions
<% @line_items.each do |line_item| %>
  <%= line_item.name %>

  <% line_item.versions.each_with_index do |version, index| %>
    <b>Version: </b><%= index + 1 %><br/>
    Event ID: <%= version.id %><br/>
    <b>Target:</b> <%= version.item_type %>
    <small>(id: <%= version.item_id %>)</small>; <b>action</b> <%= version.event %>;<br/>
  <% end %>
<% end %>