我正在跟踪Draper文档,但是相关的模型并没有被修饰。下面是我的顶级装饰师的一个片段:
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...etc...
LineItemDecorator上的options方法只是被忽略了--如果它是零,它不会显示任何东西,而不是'N/A‘。我已经在options方法中加入了binding.pry,它从未被调用过。有人能看到我错过了什么吗?
提前谢了。
发布于 2017-11-27 16:14:32
我认为您需要使用复数line_items (而不是单数line_item )来使它工作,因为这就是您的关联的命名方式。
decorates_association :line_itemshttps://stackoverflow.com/questions/47514549
复制相似问题