1

我正在阅读 Agile Rails Web Dev 的书,到目前为止,我学到的部分内容比我们可以以字符串形式调用它们的名称,或者如果有一组对象,我们可以传递对象名称,rails 会发现它需要循环通过它作为一个集合。现在我看到了这段代码,突然间我所学到的一切都变得混乱了:

在此处输入图像描述

<%= render @cart %>

我的问题是它是什么@cart,为什么不是'cart'?我怎么会知道呢?

4

2 回答 2

2

我可能是错的,但我相信在幕后 Rails 会为任何有to_partial_path方法的东西渲染一个部分。在这种情况下,我假设@cart是一个 ActiveRecord 对象,并且所有 ActiveRecord 对象都响应to_partial_path.

尝试将其添加到您的模板中并查看它的输出。它应该是您的部分路径。

<%= @cart.to_partial_path %>
于 2013-10-09T16:31:07.703 回答
2

Rails 指南建议,当您执行“渲染@cart”时,Rails 会内省@cart 的模型名称,并在当前视图路径中查找该名称的部分名称。

render :partial 的实现实际上是在传递的对象上调用 to_partial_path。默认情况下,用户对象将返回“用户/用户”。因此,我将检查 Cart 类是否实现 to_partial_path 以返回“布局/购物车”。

于 2013-10-09T16:37:40.820 回答