【发布时间】:2013-10-01 20:00:05
【问题描述】:
我正在开发一个带有控制器和视图的引擎,但我希望允许覆盖视图(这很简单,因为 Rails::Engine 允许通过自动将 app/views 从主应用程序添加到查看引擎的路径)。但是,我希望被覆盖的视图能够引用来自引擎的视图 - 例如,我想在我的应用程序中使用自定义内容“包装”引擎的视图:
# main_app/app/views/engine/template.haml
# ... custom stuff here
= render template: 'engine/template'
# ... custom stuff here
问题是,一旦我覆盖它,我就找不到引用引擎视图的方法......这可能吗?
【问题讨论】:
-
render template: "#{YourEngine::Engine.root}/engine/template"会起作用吗?可以将它包装在一个 helper 中以喜欢super_view,它返回引擎的视图文件路径。 -
@tihom 似乎不起作用,给我:
Missing template /path/to/engine/engine/template -
它需要是
render file: ...并且修改了文件路径,所以它代表模板文件的完整路径,可能需要添加app/views -
好的,这确实有效(我也在路径中添加了
app/views)。不是特别友好,而是一个开始。您应该将其添加为答案而不是评论。 -
修改了一点以单独使用文件名
标签: ruby-on-rails view ruby-on-rails-3.2 rails-engines