Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Корзина

Шаг Г1: перемещение корзины При помощи шаблонных фрагментов перенесём обслуживание корзины в макет, отображающий общий каталог. Фрагмент – часть представления, размещённая в собственном файле. Перепишем представление корзины:app/views/store/add_to_cart.rhtmlYour Cart "cart_item", :collection => @cart.items) %> Total :empty_cart %>
Шаг Г1: перемещение корзины  При помощи шаблонных фрагментов перенесём обслуживание корзины Фрагмент сохраняем в файле _cart_item.rhtml каталога app/views/storeapp/views/store/_cart_item.rhtml ×  Т.о. мы убрали отображение корзины. При вызове фрагмента мы можем использовать метод render. Параметр :object захватывает объект, 2) внесём изменения в макет store и включим в его боковую панель Home   Questions   News   Contact 3) внесём изменения в контроллер магазина store (в действии контроллера index нужно Изменим работу кнопки «Добавить в корзину» - вместо отображения страницы корзины ей Шаг Г2: корзина, использующая технологию AJAX	Сначала изменим страницу каталога, заставив её посылать Нужно приспособить браузер к отправке AJAX-запроса нашему приложению. app/views/layout/store.rhtml Pragprog Books Online Когда метод add_to_cart завершит обработку AJAX-запроса, Rails для отображения страницы станет искать Возможные проблемы- Вы удалили старый файл add_to_cart.rhtml?- Вы не забыли включить библиотеки ВопросыЧто такое шаблонный фрагмент?Как работает метод render?Каким образом мы ссылаемся на текущий
Слайды презентации

Слайд 2 Шаг Г1: перемещение корзины
При помощи шаблонных

фрагментов перенесём обслуживание корзины в макет, отображающий общий каталог.

Фрагмент – часть представления, размещённая в собственном файле.
Перепишем представление корзины:

app/views/store/add_to_cart.rhtml
Your Cart


<%= render(:partial => "cart_item", :collection => @cart.items) %>




Total<%= number_to_currency(@cart.total_price) %>


<%= button_to "Empty cart", :action => :empty_cart %>

Слайд 3


Фрагмент сохраняем в файле _cart_item.rhtml каталога app/views/store

app/views/store/_cart_item.rhtml

Фрагмент сохраняем в файле _cart_item.rhtml каталога app/views/storeapp/views/store/_cart_item.rhtml × Т.о. мы убрали отображение корзины.

cart_item.quantity %>×




Т.о.

мы убрали отображение корзины.

Слайд 4 При вызове фрагмента мы можем использовать метод render.

Параметр :object захватывает объект, который присвоен локальной переменной с

тем же именем, что и у фрагмента. Поэтому в макете можем воспользоваться вызовом
<% render(:partial => “cart” , :object => @cart) %> и в шаблоне _cart.rhtml можем сослаться на на корзину с помощью переменной cart.
Для этого:
создадим шаблон _cart.rhtml

app/views/store/_cart.rhtml
Your Cart


<%= render(:partial => "cart_item", :collection => cart.items) %>





Total<%= number_to_currency(cart.total_price) %>

<%= button_to "Empty cart", :action => :empty_cart %>



Слайд 5 2) внесём изменения в макет store и включим

в его боковую панель новый фрагмент

app/views/layouts/store.rhtml

XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


Pragprog Books Online Store
<%= stylesheet_link_tag "depot", :media => "all" %>







<%= render(:partial => "cart", :object => @cart) %>





Слайд 6

Home

Questions

Home  Questions  News  Contact

News

Contact

/>




<% if flash[:notice] -%>
<%= flash[:notice] %>

<% end -%>

<%= yield :layout %>






Слайд 7


3) внесём изменения в контроллер магазина store (в

3) внесём изменения в контроллер магазина store (в действии контроллера index

действии контроллера index нужно определить @cart)

app/controllers/store_controller.rb
def index
@products

= Product.find_products_for_sale
@cart = find_cart
end

Слайд 8 Изменим работу кнопки «Добавить в корзину» - вместо

отображения страницы корзины ей нужно будет обновить главную страницу

каталога. В конце действия add_to_cart браузер перенаправляется обратно на каталог.

app/controllers/store_controller.rb
def add_to_cart
begin
product = Product.find(params[:id])
rescue ActiveRecord::RecordNotFound
logger.error("Attempt to access invalid product #{params[:id]}")
redirect_to_index("Invalid product")
else
@cart = find_cart
@cart.add_product(product)
redirect_to_index
end
end

Чтобы этот код работал, нужно изменить определение метода redirect_to_index и сделать параметр сообщения необязательным.

app/controllers/store_controller.rb
def redirect_to_index(msg = nil)
flash[:notice] = msg if msg
redirect_to :action => :index
end

Шаблон add_to_cart.rhtml можно удалить.

Слайд 9 Шаг Г2: корзина, использующая технологию AJAX
Сначала изменим страницу

Шаг Г2: корзина, использующая технологию AJAX	Сначала изменим страницу каталога, заставив её

каталога, заставив её посылать AJAX-запрос на серверное приложение и

заставив приложение ответить HTML-фрагментом, содержащим обновлённую корзину.

Заменим метод button_to на следующий код:

app/views/store/index.rhtml
<% form_remote_tag :url => { :action => :add_to_cart, :id => product } do %>
<%= submit_tag "Add to Cart" %>
<% end %>

С помощью параметра url мы сообщаем form_remote_tag способ вызова серверного приложения. Код между do и end – тело формы.

Слайд 10 Нужно приспособить браузер к отправке AJAX-запроса нашему приложению.



app/views/layout/store.rhtml


Pragprog Books Online Store

=> "all" %>
<%= javascript_include_tag :defaults %>


Приложение также должно возвращать ответ.
Действием add_to_cart прекращаем перенаправление на отображение каталога

app/controllers/store_controller.rb
def add_to_cart
begin
product = Product.find(params[:id])
rescue ActiveRecord::RecordNotFound
logger.error("Attempt to access invalid product #{params[:id]}")
redirect_to_index("Invalid product")
else
@cart = find_cart
@cart.add_product(product)
end
end

Слайд 11
Когда метод add_to_cart завершит обработку AJAX-запроса, Rails для

отображения страницы станет искать шаблон add_to_cart, а мы его

удалили. Создадим шаблон rjs-шаблон (.rjs шаблоны – способ передачи браузеру кода JavaScript, который целиком выполняется созданием кода на стороне сервера).

app/views/store/add_to_cart.rjs
page.replace_html("cart", :partial => "cart", :object => @cart)

Переменная page – экземпляр JavaScript-генератора (Rails-класса, который создаёт код JavaScript на сервере. Чтобы он выполнялся браузером). Этот шаблон представляет HTML-код для отображения корзины и предписывает браузеру заменить содержимое контейнера
с параметром id=”cart” этим HTML-кодом.

Т.о. мы создали AJAX-приложение.

Слайд 12 Возможные проблемы
- Вы удалили старый файл add_to_cart.rhtml?
- Вы

Возможные проблемы- Вы удалили старый файл add_to_cart.rhtml?- Вы не забыли включить

не забыли включить библиотеки JavaScript в макет store (используя

javascript_include_tag)?
- Пора сделать полную перезагрузку страницы?
- Вы получали какие-нибудь сообщения об ошибках? Посмотрите файл development в каталоге logs
- Если в регистрационном файле нет входящих запросов на выполнение действия add_to_cart, то браузер не создаёт AJAX-запросов. У браузера может быть отключено выполнение JavaScript (посмотреть сгенерированный HTML-код)
- Остановить и снова запустить приложение
- Поместить в макет заголовок
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,
чтобы переключить IE в стандартный режим, который лучше работает с AJAX-содержимым.

  • Имя файла: korzina.pptx
  • Количество просмотров: 163
  • Количество скачиваний: 0