渲染另一部分

时间:2013-09-12 14:46:45

标签: ruby-on-rails

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

<%= render(cart.line_items) %>

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

4 个答案:

答案 0 :(得分:3)

因为部分@cart中的实例变量_cart不可用。它的渲染线可能如下所示:

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

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

因此,用户的购物车可用作本地变量cart

答案 1 :(得分:1)

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

答案 2 :(得分:1)

@cart(可能)是cart类的特定实例,但是您呈现的是引用cart对象的部分实例。

答案 3 :(得分:1)

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

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

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