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 %>

任何帮助将不胜感激,在此先感谢:)!

4

1 回答 1

1

这个答案有点复杂,但值得庆幸的是 spree_address_book 扩展中有一个很好的例子。地址簿扩展允许用户从单选按钮中选择他们以前使用的地址之一,这样您就不必再次输入所有数据。

其工作原理的关键在于 checkout_controller_decorator 和 order 装饰器:

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 根据是否输入了正常地址或使用了单选按钮地址选择来设置地址参数。然后订单装饰器接受这两种形式的输入。

如果您只接受一种类型的送货地址,您可以将其简化,但该仓库中的代码应该可以帮助您弄清楚如何做到这一点:

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

于 2013-06-19T15:02:35.320 回答