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