我正在开发一个带有控制器和视图的引擎,但是我想允许覆盖视图(这很简单,因为Rails :: Engine允许通过自动从主应用程序中添加app/views
来实现这一点到引擎的视图路径)。但是,我希望被覆盖的视图能够引用引擎中的视图 - 例如,我想在我的应用程序中使用自定义内容“包装”引擎的视图:
# main_app/app/views/engine/template.haml
# ... custom stuff here
= render template: 'engine/template'
# ... custom stuff here
问题是,一旦我覆盖它,我找不到引用引擎视图的方法......是否可能?
答案 0 :(得分:1)
尝试通过提供引擎模板文件的完整路径来渲染文件。
# in view
<%= engine_view {|f| render file: f} %>
# in helper
def engine_view(&b)
yield eval("__FILE__.gsub(Rails.root.to_s, YourEngine::Engine.root.to_s)",b.binding)
end