Rails 在我使用 SimpleDelegator 时生成了错误 ID 的路径

Rails generates path with wrong id when I use SimpleDelegator

我有

= link_to order_item_path(item)

item是实际OrderItem的实例,装饰有

module CartPage
  class ItemDecorator < SimpleDelegator
    include ViewHelpers
    include BookCoverHelpers

    def initialize(order_item)
      @order_item = order_item
      super(order_item.book)
    end

    attr_reader :order_item
    delegate :id, to: :order_item

  end
end

问题是 order_item_path(item) 实际上是从书中获取 ID 并省略 delegate :id, to: :order_item

我知道我可以order_item_path(id: item.id),但我不想,我想知道哪个方法实际使用 rails 来获取 id,我想覆盖那个方法

P.S。 因为我也有

  - items.each do |item|
    = fields_for 'items[]', item do |item_fields|
      ..

其中 fields_for 也得到了错误的 id(书中的 id)

好的,我找到答案了

delegate :id, :to_param, to: :order_item