мне нужно переопределить метод rescue_from_spree_gateway_error от контроллера checkout_controller.rbSpree - Переопределить методы checkout_controller
Моего шлюз возвращает это:
Gateway Error --- !ruby/object:ActiveMerchant::Billing::Response params: success: false order_status: message: Autoriza��o negada amount: order: transaction: message: Autoriza��o negada success: false test: false authorization: fraud_review: avs_result: code: message: street_match: postal_match: cvv_result: code: message:
Это мое переопределение, в /app/controllers/checkout_controller_decorator.rb
module Spree
CheckoutController.class_eval do
def rescue_from_spree_gateway_error(error)
puts "==========================================="
flash[:error] = error.message
render :edit
end
end
end
Я добавил puts
, чтобы я мог Это было на консоли, но оно не было напечатано.
Я также добавил еще puts
над объявлением метода и он печатает, когда я запустить сервер:
=> Booting WEBrick
=> Rails 3.2.13 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
!!!!!THIS IS ABOVE THE METHOD!!!!! [2013-09-05 16:33:31] INFO WEBrick 1.3.1 [2013-09-05 16:33:31] INFO ruby 1.9.3 (2013-06-27) [x86_64-linux] [2013-09-05 16:33:31] INFO WEBrick::HTTPServer#start: pid=21635 port=3000
Так он показывает мне, что загружен класс, но метод никогда не вызывается как ошибка, возвращенная выше ActiveMerchant::Billing::Response
, не является ошибкой шлюза.
checkout_controller
имеет эту линию, вызывая метод, когда GatewayError
происходит:
rescue_from Spree::Core::GatewayError, :with => :rescue_from_spree_gateway_error
Может быть, это потому, что метод в ядре без аргументов и ваш имеет Arg? – zrl3dx
Я действительно не знаю, я следил за одним предложением от пользователя в группе писем: https://groups.google.com/forum/#!topic/spree-user/rRcIoDs-9Dc – Gerep
@ zrl3dx Я просто попробовал он удалил аргумент и закодировал сообщение «flash [: error] =« Не авторизован », ничего не произошло =/ – Gerep