Spree Solidus:结账时合并地址和交货步骤

时间:2016-03-06 15:42:33

标签: ruby-on-rails spree

我正在尝试合并地址和交付,并在solidus结帐过程中将其作为地址单步执行。面对几个问题。我遵循了以下流程:

order_decorator

中的

remove_checkout_step :delivery

在重写 _address.html

中添加以下代码

<%= form.fields_for :shipments do |ship_form| %> <div class="shipment"> <h5 class="stock-shipping-method-title"><%= Spree.t(:shipping_method) %></h5> <ul class="field radios shipping-methods"> <%= fine %> <% ship_form.object.shipping_rates.each do |rate| %> <li class="shipping-method"> <label> <%= ship_form.radio_button :selected_shipping_rate_id, rate.id %> <span class="rate-name"><%= rate.name %></span> <span class="rate-cost"><%= rate.display_cost %></span> </label> </li> <% end %> </ul> </div> <% end %>

但是用于选择运输方式的单选按钮不会出现。我甚至在checkout_controller的 before_address 中调用了 before_delivery 回调函数。

任何建议都非常有用

1 个答案:

答案 0 :(得分:0)

首先,只有在指定了发货地址时才会发货,因此这应该在address步之后。

也许您可以在地址步骤中禁用此表单,并在填写(保存)地址时启用它。在这种情况下,您不必删除交付步骤,而是使用通常的狂欢流程,只需添加ajax请求以保存地址并移至交付步骤,然后启用货件的表单。

此外,上述解决方案可确保订单创建/更新的管理流程保持不变。

仅供参考:通过删除递送步骤,您基本上已从应用程序中删除了货件的创建,但这不是您想要的,对吧?