2013-09-12 4 views
1

Я новичок в rails.Я имею в виду «Agile web development with rails». Здесь они оказывают еще частичное «_line_item» от частичного «_cart», используя синтаксис:Оказание еще одного частичного

<%= render(cart.line_items) %> 

Мой вопрос, почему использовать cart и не @cart? В чем разница?

ответ

3

Поскольку переменная экземпляра @cart будет недоступна в частичном размере _cart. Его делают линия, вероятно, выглядит следующим образом:

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

или

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

Таким образом, корзина пользователя доступна в качестве локальной переменной cart.

+1

'<% = Render«телеги»,: телега => @ user.cart%> ' – hypee

+0

Или этот, да. –

1

Я думаю, это потому, что, как вы сказали здесь, вы используете неполную тележку, а не модель корзины, которую вы сохранили в переменной @cart. Разница заключается в том, что частичная тележка - это вид, а @cart действительно может быть чем угодно, поскольку она является переменной, но, скорее всего, является моделью вашего объекта тележки.

1

@cart является (возможно) конкретным экземпляром класса cart, но вы представляете частичное, что относится к объекту cart.

1

Использование зависит от того, как вызывается представление или частичное.

Вы можете определить переменные экземпляра, такие как @cart = current_account.cart, который затем доступен во всех представлениях, последующих частицах или помощниках, которые вы вызываете с вашего контроллера.

Или вы можете назвать render :partial=>'cart_page', :locals => { cart: @account.cart }, который пропускает только переменный конкретно к частичному имени «корзине» (без @, так как он не является глобально доступен)

+0

@vars не являются глобальными. –

+0

Хорошо, @vars - это только область экземпляра, доступная ко всему, что вызвано внутри этого экземпляра. Все операции рендеринга представлений или частичных файлов могут по-прежнему обращаться к этому var. Я просто всегда называю их глобальными, потому что, работая в верхних слоях, они наверняка кажутся такими;) – KappaNossi

Смежные вопросы