我正在关注《Agile Web Development with Rails 4》这本书,我对渲染的部分感到有点困惑。问题的简单版本是......在 application.html.erb 文件中它说
render @cart
这很令人困惑,因为我认为需要有一个与该视图关联的控制器才能知道要使用哪个部分和 @cart 变量。是否只是通过命名约定来查找像 _cart.html.erb 这样的部分?在这种情况下,在渲染该部分之前,它实际上并不知道 @cart 是什么?
一些澄清会很可爱。谢谢!
这是一个简写语法。来自文档 http://guides.rubyonrails.org/layouts_and_rendering.html:
每个部分还有一个与部分同名的局部变量(减去下划线)。您可以通过 :object 选项将对象传递给此局部变量:
<%= render partial: "customer", object: @new_customer %>
在客户部分中,客户变量将从父视图引用@new_customer。
如果您有一个模型实例要渲染为部分模型,则可以使用简写语法:
<%= render @customer %>
假设 @customer 实例变量包含 Customer 模型的实例,这将使用 _customer.html.erb 来呈现它,并将局部变量 customer 传递到将引用父视图中的 @customer 实例变量的局部变量中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)