如何呈现与当前 View 不同的目录(在我的例子中是父目录)中的部分?
<%=render_partial :sidebar%> #looks in the current dir and works as expected
<%=render_partial "/view/sidebar"%> #doesn't work!
谢谢!
最佳答案
您必须指定负责正确 View 的正确 Controller :
TheRightController.render_partial :sidebar
如果您不指定 Controller 类,则 render_* 仅适用于当前操作( Controller ),除了执行真正内部 HTTP 请求的 render_full。
所以,答案是:如果您需要共享模板,只需创建特殊的 Controller ,即称为 Shared,内部没有任何操作方法,只需在适当的 View 文件夹中使用许多模板并调用 Shared.render_partial。
Shared.render_partial 像内部请求一样工作。它呈现 Controller Action 的内容,甚至执行 Action 的方法。如果您只想呈现 View (不执行 Shared 的操作方法),请改用 Shared.render_view。
此外,您可以使用内部请求在共享 Controller 的方法中准备一些数据。例如,如果您的侧边栏由@articles 组成,让我们在 Shared 的 sidebar() 方法中加载它们。您不需要在显示侧边栏的任何其他 Controller 中加载@articles!您只在其中调用“Shared.render_partial :sidebar”。这就是如何使用 Ramaze 构建类似小部件的 Web :-)
关于ruby - 在 Ramaze 的父目录中渲染部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13755719/