Spree チェックアウト ルーチンで請求先 (または配送先) 住所を削除するにはどうすればよいですか? spree 1.3を使用しています
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は注文の配達先住所や配達情報を要求しません。
スプリーコアを使用している場合は、これに代わるものがあります
view/spree/checkout/edit ファイルには、error_messages.html.erb = render :partial => 'spree/shared/error_messages', :locals => { :target => @order } を含む render ステートメントがあります。
したがって、_error_messages.html.erb から「船」名を削除する必要があります。そうすれば、この種のエラーは表示されなくなります。
spree/shared/_error_message ファイルに次の変更を加えます。
-target.errors.full_messages.each do |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