2013-06-19 49 views
1

我在我的應用程序中構建了一個插件來瘋狂。我們正在使用一家航運公司,該公司不會向私人地址交付,而是向全國的一些包裹商店發貨。因此,當用戶在結賬時進入送貨步驟時,他/她是否必須在多個可以提貨的地方進行選擇?用單選按鈕指定多個屬性

我的問題是,我想讓用戶選擇這些地方/地址與單選按鈕。那麼如何(或可能?)將所選包裹商店(街道名,城市,郵政編碼等)的所有屬性發布並存儲爲訂單的送貨地址?我現在有這樣的事情:

<%= form_for @order do |f| %> 
    <% @parcel_shops.each do |parcel_shop| %> 
    <%= f.fields_for :ship_address, parcel_shop do |ship_form| %> 
     # This is the part that i need to change 
     <%= ship_form.radio_button :attributes, parcel_shop.attributes 
    <% end %> 
    <% end %> 
    ... 
<% end %> 

任何幫助將不勝感激,在此先感謝:)!

回答

1

這個答案有點複雜,但幸運的是spree_address_book擴展中有一個很好的例子。地址簿擴展允許用戶從單選按鈕中選擇其以前使用的地址之一,這樣就不必再次輸入所有數據。

到這是如何工作的關鍵是在checkout_controller_decorator和秩序裝飾:

https://github.com/romul/spree_address_book/blob/master/app/controllers/spree/checkout_controller_decorator.rb https://github.com/romul/spree_address_book/blob/master/app/models/spree/order_decorator.rb

在checkout_controller的before_filter,來設定基於一般的地址是否輸入,或無線電地址PARAMS使用按鈕地址選擇。訂單裝飾器接受這兩種形式的輸入。

如果你只接受一種類型的送貨地址,你可以簡化下來,但在回購協議的代碼應該幫助你找出如何做到這一點:

https://github.com/romul/spree_address_book/