我正在使用Rails 4书来关注敏捷Web开发,我对渲染方面有点困惑。问题的简单版本是......在application.html.erb文件中,它说
render @cart
这令人困惑,因为我认为需要有一个与该视图相关联的控制器才能知道要使用哪个部分和@cart变量。是否只是通过命名约定,该行寻找像_cart.html.erb这样的部分?在那种情况下,它实际上不知道@cart是什么,直到它呈现部分?
一些澄清很可爱。谢谢!
答案 0 :(得分:7)
这是一种速记语法。 From the docs:
每个partial也有一个局部变量,其名称与partial(减去下划线)相同。您可以通过:object选项将对象传递给此局部变量:
<%= render partial: "customer", object: @new_customer %>
在customer partial中,customer变量将从父视图引用@new_customer。
如果要将模型实例渲染为局部,则可以使用简写语法:
<%= render @customer %>
假设@customer实例变量包含Customer模型的实例,这将使用_customer.html.erb来呈现它,并将局部变量customer传递给partial,它将引用@customer中的@customer实例变量。父母观点。