我正在阅读Agile Rails Web Dev书,到目前为止,我学到的部分内容比我们可以用字符串形式调用它们的名字,或者如果有一个对象集合,我们可以传递对象名称和rails将会发现它需要作为集合循环它。 现在我看到了这段代码,突然之间我所学到的一切都让人感到困惑:
<%= render @cart %>
我的问题是@cart
是什么,为什么不是'cart'
?我怎么知道呢?
答案 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'。