我已经生成了一个名为Doctors的扩展程序。
我正在尝试使用以下指南http://refinerycms.com/guides/extending-controllers-and-models-with-decorators扩展装饰器的默认功能。
装饰:
Refinery::PagesController.class_eval do
before_filter :find_doctors, only: [:doctors]
protected
def find_doctors
@find_doctors = Refinery::Doctors::Doctor.all
end
end
如果我为[:home]替换[:doctors]我可以在主页中看到对象,但我想在Doctor索引视图中显示这些项目。
我错过了什么?
答案 0 :(得分:1)
使用您的代码,您正试图运行' find_doctors '行动前的方法' 医生'在 Refinery :: PagesController ,但操作' 医生'在 Refinery :: PagesController 中不存在。
替换[:home]而不是[:doctors]适用于主页,因为操作' home'确实存在于 Refinery :: PagesController 。
所以,你需要做的是装饰 Refinery :: DoctorsController 而不是Refinery :: PagesController并在索引之前运行 find_doctors 方法索引视图。
Refinery::DoctorsController.class_eval do
before_filter :find_doctors, only: [:index]
protected
def find_doctors
@find_doctors = Refinery::Doctors::Doctor.all
end
end