Как удалить платежный адрес (или адрес доставки) в процедуре оформления заказа Spree? Я использую Шпрее 1.3
Spree удалить платежный адрес
Ответы (2)
Вы можете удалить адрес доставки, удалив этап доставки из определения checkout_flow
, поместив этот код в свое приложение по адресу app/models/spree/order_decorator.rb
:
Spree::Order.class_eval do
checkout_flow do
go_to_state :address
go_to_state :payment, :if => lambda { |order| order.payment_required? }
go_to_state :confirm, :if => lambda { |order| order.confirmation_required? }
go_to_state :complete
remove_transition :from => :delivery, :to => :confirm
end
end
Не имея этапа доставки, Spree не будет запрашивать адрес доставки или информацию о доставке для заказа.
У меня есть альтернатива для этого, если вы используете spree-core
В вашем файле view/spree/checkout/edit есть оператор рендеринга, который включает error_messages.html.erb = render :partial => 'spree/shared/error_messages', :locals => { :target => @order }
Итак, теперь вам нужно удалить имя «корабль» из _error_messages.html.erb, тогда он не будет показывать эту ошибку.
Внесите следующие изменения в файл spree/shared/_error_message:
-target.errors.full_messages.each сделать |msg|
-unless (msg.include?("Ship"))
= msg
Помните, что внесите соответствующие изменения и в количество ошибок, используя здесь цикл. В настоящее время я не использую его, поэтому сделал комментарий
//= t(:errors_prohibited_this_record_from_being_saved, :count => target.errors.count)
Я также прокомментировал тот же вопрос на github и stackoverflow- https://github.com/spree/spree/issues/2571#issuecomment-13769093