Ruby on rails開發從頭來(windows)(十二)-訂單(Order)

來源:互聯網
上載者:User

在上次的內容裡,我們建立了訂單的Model,和表示頁面,這次繼續編寫CHECKOUT的處理。

 

1.       在checkout.rhtml的頁面上,有一個CHECKOUT按鈕,上次還沒有給它編寫處理代碼,現在在store_controller中添加save_order方法,代碼如下:

def save_order

@cart = find_cart

@order = Order.new(params[:order])

@order.line_items <<@cart.items

if @order.save

@cart.empty!

redirect_to_index('Thank you for your order')

else

render(:action=>'checkout')

end

end

添加了上面的代碼後,再點擊CHECKOUT按鈕,會回到index頁面。

2.         當然,在Checkout頁面上,通常我們是不會讓Name等資訊為空白的,下面我們來給頁面上添加輸入的檢查,這點在前面本系列的第五篇隨筆裡有提到。在這裡我們修改order.rb檔案,添加一句代碼:

validates_presence_of :name, :email, :address, :pay_type

還要修改checkout.rhtml檔案,讓錯誤提示顯示出來:

<%= error_messages_for("order") %>

<%= stylesheet_link_tag "scaffold", "depot", :media => "all" %>

這時候,如果沒有填入項目的值,就會顯示錯誤提示,


         

3.         現在我們給輸入項目都填上值,然後點擊CHECKOUT按鈕,頁面會遷移到index頁面,

 

    現在,我們的訂單頁面已經完成了,可以用phpMyAdmin看看資料裡,order和line_items

表中已經有資料了。

另外,點擊Show my cart連結,可以看到下了訂單後購物車已經清空了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.