我们何时需要实例变量,何时需要部分字符串名称

时间:2013-10-09 16:20:05

标签: ruby-on-rails

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

enter image description here

<%= render @cart %>

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

2 个答案:

答案 0 :(得分:2)

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

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

<%= @cart.to_partial_path %>

答案 1 :(得分:2)

Rails Guide表示当你执行“渲染@cart”时,Rails会对@cart的模型名称进行内省,并在当前视图路径中查找该名称的部分名称。

render:partial的实现实际上调用了传递对象上的to_partial_path。默认情况下,User对象将返回'users / user'。所以我会检查Cart类是否实现to_partial_path以返回'layouts / cart'。