3

我想在不同命名空间的控制器之间共享视图,包括局部视图、布局和模板。

问题

而不是把我的观点放进去

app/views/#{namespace}/#{controller}/...
app/views/layouts/#{namespace}/...

我想表达我的观点

app/views/#{controller}/... 
app/views/layouts/... # as normal, without namespaces

我也希望这是可选的。例如,如果有布局,app/views/layouts/#{namespace}/...则使用它,否则app/views/layouts/...照常使用。

我尝试过的一些事情:

  1. 在这里使用类似的东西prepend_view_path是行不通的,因为它仍然会在任何视图路径中admin/courses#index寻找模板。admin/courses/index

  2. 使用该layout方法可能有效,但可能不适用于模板和部分。

  3. 我试过覆盖 render 方法,但这似乎有点hacky。而且我不能只在 中执行此操作ApplicationController,因为它不处理视图中的渲染部分。所以我不得不在ApplicationHelper课堂上再次覆盖渲染方法,这很尴尬,不是干的,也不是那么直截了当。

提前致谢!

4

1 回答 1

1

我喜欢铁轨。它是自动完成的,有点像。

我有从基本控制器扩展的控制器,即Admin::CoursesController正在扩展BaseCoursesController等。

所以我只需要把我的观点放进去

app/views/base_courses/index...

我仍然可以选择将我的观点放入

app/views/admin/courses/index...

瞧!

于 2013-02-27T01:33:52.413 回答