Draper gem 没有装饰关联模型
Draper gem not decorating associated model
我正在关注 Draper gem 文档,但相关模型未被修饰。这是我的顶级装饰器的片段:
module Admin
class OrderDecorator < Draper::Decorator
delegate_all
decorates_finders
decorates_association :line_item
def amount
model.amount.nil? ? 0 : model.amount
end
end
end
这是我的关联装饰器的一个片段:
module Admin
class LineItemDecorator < Draper::Decorator
delegate_all
def options
model.options.present? ? model.options.to_s : 'N/A'
end
end
end
控制器中调用装饰器的方法如下:
def show
@subject = Admin::OrderDecorator.find(params[:id])
end
它在视图中的使用方式如下:
@subject.line_items.each do |li|
= li.options
...等...
LineItemDecorator 上的选项方法只是被忽略了 - 如果它为 nil,则不显示任何内容,而不是 'N/A'。我已将 binding.pry 放入选项方法中,但它永远不会被调用。谁能看到我遗漏了什么?
在此先致谢。
我认为您需要使用复数 line_items
而不是单数 line_item
才能使其正常工作,因为您的协会就是这样命名的。
decorates_association :line_items
我正在关注 Draper gem 文档,但相关模型未被修饰。这是我的顶级装饰器的片段:
module Admin
class OrderDecorator < Draper::Decorator
delegate_all
decorates_finders
decorates_association :line_item
def amount
model.amount.nil? ? 0 : model.amount
end
end
end
这是我的关联装饰器的一个片段:
module Admin
class LineItemDecorator < Draper::Decorator
delegate_all
def options
model.options.present? ? model.options.to_s : 'N/A'
end
end
end
控制器中调用装饰器的方法如下:
def show
@subject = Admin::OrderDecorator.find(params[:id])
end
它在视图中的使用方式如下:
@subject.line_items.each do |li|
= li.options
...等...
LineItemDecorator 上的选项方法只是被忽略了 - 如果它为 nil,则不显示任何内容,而不是 'N/A'。我已将 binding.pry 放入选项方法中,但它永远不会被调用。谁能看到我遗漏了什么?
在此先致谢。
我认为您需要使用复数 line_items
而不是单数 line_item
才能使其正常工作,因为您的协会就是这样命名的。
decorates_association :line_items