1

我是 Rails 的新手。我指的是“使用 Rails 进行敏捷 Web 开发”。在这里,他们使用以下语法从部分“_cart”渲染另一个部分“_line_item”:

<%= render(cart.line_items) %>

我的问题是为什么使用cart而不是@cart?有什么区别?

4

4 回答 4

3

因为实例变量@cart在 partial 中不可用_cart。它的渲染线大概是这样的:

<%= render partial: 'cart', locals: {cart: @user.cart} %>

或者

<%= render 'cart', :cart => @user.cart %>

因此,用户的购物车可用作局部变量cart

于 2013-09-12T14:49:18.250 回答
1

我认为这是因为正如您在这里所说,您使用的是部分购物车,而不是您保存到 @cart 变量的购物车模型。不同之处在于部分购物车是一个视图,@cart 实际上可以是任何东西,因为它是一个变量,但很可能是您的购物车对象的模型。

于 2013-09-12T14:48:59.143 回答
1

@cart是(可能)该类的特定实例cart,但您正在渲染引用该cart对象的部分。

于 2013-09-12T14:49:41.220 回答
1

用法取决于视图或局部视图的调用方式。

您可以定义实例变量,例如@cart = current_account.cart在您从控制器调用的所有视图、后续部分或助手中可用的实例变量。

或者您可以调用render :partial=>'cart_page', :locals => { cart: @account.cart }which 仅将变量专门传递给名为“cart”的部分(没有@,因为它不是全局可用的)

于 2013-09-12T14:54:43.773 回答