ruby - 在 Ramaze 的父目录中渲染部分内容

标签 ruby ramaze

如何呈现与当前 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/

相关文章:

mysql - Activerecord "where"数组属性的条件

ruby - Ruby 有哪些代码高亮库?

ruby - 如何使用 Ruby 和 Sequel 将图像存储在数据库中?

ruby - Ramaze 相当于 Sinatra 的 Sinatra::NotFound 吗?

ruby - 为什么 Sequel 不写入我的数据库表?

ruby-on-rails - 如何在 Mac OS X 上重新安装 Ruby 和 Gem

ruby Canvas (GUI)

Ruby 日期和时间从一种格式到另一种格式的转换

ruby - 如何在此 PostgreSQL 数据集中找到每年两个类别的总和?

ruby - 为什么 Ruby 的 Win32Console 不适用于 Ramaze?