Как везде отображать сумму заказа

8 views
Skip to first unread message

barba

unread,
Jan 8, 2012, 4:51:16 AM1/8/12
to Synergy
Подскажите, пожалуйста, что мне сделать, чтобы отображать суммарную
стоимость заказа в любом шаблоне (например, в шапке), а не только в
checkout.

Нашел метод current_order в lib/spree/current_order.rb spree_core,
который возвращает объект, содержащий информацию о заказе, но не понял
как сделать так, чтобы можно было его задействовать где-то еще помимо
gem'a не понял.
Подскажите, пожалуйста, как это осуществить - пока еще плохо рублю в
RoR (случайно каламбурчик получился =), но пытаюсь работать в сторону
продвижения скилов.

Alexander Negoda

unread,
Jan 8, 2012, 5:09:33 AM1/8/12
to synerg...@googlegroups.com

Подскажите, пожалуйста, что мне сделать, чтобы отображать суммарную
стоимость заказа в любом шаблоне (например, в шапке), а не только в
checkout.


barba

unread,
Jan 8, 2012, 5:17:25 AM1/8/12
to Synergy
Спасибо за быстрый ответ.

Я правильно понимаю, что хелперы везде?
Только не понял - как параметр туда передается все тот же
current_order, но при этом если я обращаюсь к нему напрямую, то он
равен null. Почему так?

On Jan 8, 2:09 pm, Alexander Negoda <alexander.neg...@gmail.com>
wrote:

> https://github.com/spree/spree/blob/0-60-stable/core/app/helpers/spre...

Alexander Negoda

unread,
Jan 8, 2012, 5:43:36 AM1/8/12
to synerg...@googlegroups.com
Я правильно понимаю, что хелперы везде?

Враги везде ;)
А что "хелперы везде", то я просто в замешательстве :)
 
Только не понял - как параметр туда передается все тот же
current_order, но при этом если я обращаюсь к нему напрямую, то он
равен null. Почему так?


current_order  - это объект и он nil до тех пор, пока покупатель не поместил в него ни одного товара.
Обрати внимание, что надо проверять current_order:


if current_order.nil? or current_order.line_items.empty?
      text = "#{text}: (#{t('empty')})"
      css_class = 'empty'
    else
      text = "#{text}: (#{current_order.item_count}) #{order_price(current_order)}"
      css_class = 'full'
    end

По-умолчанию, item_total равен нулю.



В общем, тебе можно использовать вот этот хелпер: <%= link_to_cart(text = t('cart')) %> или напиши по подобию свой.
 

barba

unread,
Jan 8, 2012, 5:54:30 AM1/8/12
to Synergy
Большое спасибо. Понял, переварил, буду использовать.

On Jan 8, 2:43 pm, Alexander Negoda <alexander.neg...@gmail.com>
wrote:


> > Я правильно понимаю, что хелперы везде?
>
> Враги везде ;)
> А что "хелперы везде", то я просто в замешательстве :)
>
> > Только не понял - как параметр туда передается все тот же
> > current_order, но при этом если я обращаюсь к нему напрямую, то он
> > равен null. Почему так?
>
> current_order  - это объект и он nil до тех пор, пока покупатель не
> поместил в него ни одного товара.
> Обрати внимание, что надо

> проверять<https://github.com/spree/spree/blob/0-60-stable/core/app/helpers/spre...>current_order:


>
>     if current_order.nil? or current_order.line_items.empty?
>
>       text = "#{text}: (#{t('empty')})"
>
>       css_class = 'empty'
>
>     else
>
>       text = "#{text}: (#{current_order.item_count})
> #{order_price(current_order)}"
>
>       css_class = 'full'
>
>     end
>
> По-умолчанию, item_total равен

> <https://github.com/spree/spree/blob/0-60-stable/core/db/migrate/20090...>


> нулю.
>
> В общем, тебе можно использовать вот этот

> <https://github.com/spree/spree/blob/0-60-stable/core/app/helpers/spre...>

Reply all
Reply to author
Forward
0 new messages