1

我正在开发一个带有控制器和视图的引擎,但我想允许视图被覆盖(这很简单,因为 Rails::Engine 允许通过自动app/views从主应用程序添加到引擎的视图路径来实现这一点) . 但是,我希望被覆盖的视图能够引用来自引擎的视图 - 例如,我想在我的应用程序中使用自定义内容“包装”引擎的视图:

# main_app/app/views/engine/template.haml

# ... custom stuff here
= render template: 'engine/template'
# ... custom stuff here

问题是,一旦我覆盖它,我就找不到引用引擎视图的方法......这可能吗?

4

1 回答 1

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
于 2013-10-01T21:27:37.567 回答