在上次的內容裡,我們編寫了CHECKOUT的處理。這次我們將顯示購物車和訂單放在一個頁面上表示,這樣使用者在下訂單的時候就可以很方便地看到自己的購物情況。
1. 修改checkout.rhtml檔案,只要添加一句代碼:
<%= error_messages_for("order") %>
<%= render_component(:action => "display_cart") %> ――這句
<%= stylesheet_link_tag "scaffold", "depot", :media => "all" %>
在display_cart頁面上點擊“checkout”連結,可以看到checkout頁面已經發生了改變,
2. 但是我們看到,在頁面的右上方,Checkout連結還顯示著,我們當然要把它去掉。回到上面添加的那句代碼:
<%= render_component(:action => "display_cart") %>
render_component實際上是把整個display_cart頁面全部顯示了,現在我們來添加參數,讓它能區分是在display_cart頁面還是在checkout頁面。
在checkout頁面上,把上面添加的代碼改為:
<%= render_component(:action => "display_cart",:params => { :context => :checkout }) %>
可以看到我們添加了一個context參數。
下面要修改store_controller.rb檔案,修改display_cart方法為:
def display_cart
@cart = find_cart
@items = @cart.items
if @items.empty?
redirect_to_index("Your cart is currently empty")
end
if params[:context] == :checkout
render(:layout=> false)
end
end
然後修改display_cart.rhtml頁面,對context參數為checkout的情況做出判斷,然後作對應的顯示:
將原來的代碼:
<ul>
<li><%= link_to 'Continue shopping', :action => "index" %></li>
<li><%= link_to 'Empty cart', :action => "empty_cart" %></li>
<li><%= link_to 'Checkout', :action => "checkout" %></li>
</ul>
修改為:
<ul>
<li><%= link_to 'Continue shopping', :action => "index" %></li>
<% unless params[:context] == :checkout -%>
<li><%= link_to 'Empty cart', :action => "empty_cart" %></li>
<li><%= link_to 'Checkout', :action => "checkout" %></li>
<% end -%>
</ul>
OK了,現在來看看效果,