Rails - 可以在命名空间控制器之间共享视图(部分,模板和布局)吗?

时间:2013-02-27 00:46:50

标签: ruby-on-rails-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。< / p>

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

  3. 我已尝试覆盖渲染方法,但这似乎有点 hacky 。我不能只在ApplicationController中执行此操作,因为它不处理视图中的部分渲染。所以我必须在ApplicationHelper类中再次覆盖渲染方法,这很尴尬,不是干,而不是直截了当。

  4. 提前致谢!

1 个答案:

答案 0 :(得分:1)

我喜欢铁轨。它自动完成,sorta。

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

所以我只需要将我的观点放在

app/views/base_courses/index...

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

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

瞧!